1

我一直在尝试通过 PHP 制作登录系统。当我尝试运行它时,所有代码($errors as $error)都显示在实际网页上。我一直在尝试测试它几个小时。

注意:当我将 更改为><,它可以正常工作,if(count($errors) > 0){ 但这使得即使密码/用户名出现错误,他们仍然可以按 Enter 键。

请提供任何帮助!提供了代码。

<?
    mysql_pconnect('localhost', 'root', '');
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>
<body>
    <?php
        if(!$_POST['submit']) {
    ?>
            <form action="index.php" method="post">
                <table border="1">
                    <tr>
                        <td>
                            Username:
                        </td>
                        <td>
                            <input type="text" name="username" />
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Password:
                        </td>
                        <td>
                            <input type="text" name="password" />
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Retype Password:
                        </td>
                        <td>
                            <input type="text" name="passwordconf" />
                        </td>
                    </tr>
                     <tr>
                        <td>
                            Email Address:
                        </td>
                        <td>
                            <input type="text" name="email" />
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2" align="center">
                            <input type="submit" value="Create User" name="submit" />
                        </td>
                    </tr>
                </table>
            </form>
    <?php
        } else {     
            $username = $_POST['username'];
            $password = $_POST['password'];
            $passwordconf = $_POST ['passwordconf'];
            $email = $_POST ['email'];

            $errors = array();

            if(!$username) {

                $errors[1] = "Please enter a username.";

            }
            if(!$password) {

                $errors[2] = "Please enter a password.";

            }
            if(!$passwordconf) {

                $errors[3] = "Please retype password.";

            }
            if(!$email) {

                $errors[4] = "Please enter an email address.";

            }
            if($password != $passwordconf) {

                $errors[5] = "Passwords do not match.";

            }
            if(count($errors) > 0){

                foreach($errors as $error) {

                    echo "$error<br>";

                }

            } else {
                mysql_query("INSERT INTO 'users' . 'user_info'
                ('username', 'password', 'email', 'user_admin_level')
                VALUES ('".$username."', '".md5($password)."', '".$email."', '1');");
            }
        }
    ?>
</body>
</html>
4

6 回答 6

1

从 URL :file:///C:/Users/User/Desktop/LoginSystem.php 您正在访问一个不会被 PHP 解释器(wamp 或 lamp)解释的文件。

您需要安装一个 php 服务器(wamp、xamp 或 Lamp)并将您的文件放在相应的网络服务器目录中,然后通过输入这样的 url 来执行您的文件:

localhost/LoginSystem.php

希望这会有所帮助

于 2012-09-18T06:13:11.027 回答
1

你不能那样运行 PHP。您需要 Web 服务器来运行 PHP。按着这些次序,

使用 XAMPP 非常简单。按着这些次序 -

  1. 安装并运行XAMPP应用程序。通过它打开 Apache & MySQL(如果您的应用程序需要数据库)服务。
  2. 单击 XAMPP 控制面板上的“探索”按钮 - 在打开的窗口中,检查 htdocs 文件夹。
  3. htdocs 文件夹是所有 PHP 脚本所在的文件夹。这是 Apache 指向的文件夹。
  4. 您可能希望在 /htdocs/ 文件夹中创建一个单独的文件夹来保存所有 PHP 程序。我们称它为“我的程序”。
  5. 将您的 php 脚本保存在 /htdocs/myprograms 文件夹中。(例如 test.php)
  6. 现在,启动您的网络浏览器并输入以下地址:http://localhost/myprograms/test.php

您的浏览器现在将执行脚本并向您显示输出。

于 2012-09-18T06:12:26.033 回答
1

如果没有为它们提供服务的网络服务器,您将无法调用 PHP 文件。PHP 是“PHP Hyptertext Preprocessor”的首字母缩写词,这意味着需要一个预处理器来解释这些文件。

尝试使用XAMPP,这是一个轻量级的服务器系统,带有一个 apache 网络服务器、一个 mySQL 服务器以及 PHP 和 PERL 支持。

使用 XAMPP 时,已将 php 文件放入 XAMPP 安装的 htdocs 文件夹中,然后调用http://localhost/yourscript.php.

于 2012-09-18T06:09:41.787 回答
1

@Rick Roll'd

像这样打开你的 php 页面

http://localhost/path_to_page/LoginSystem.php

不要将您的页面存储在目录中的Desktop保存 php 页面上。www/htdocs

于 2012-09-18T06:09:49.873 回答
0

也许您应该先放置 HTML 代码。空字段并不总是错误。例如:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Login</title>
</head>
<body>

<form action= "<?php $_SERVER[ 'PHP_SELF' ] ?>" method="post">
  <table border="1">
    <tr>
      <td>
        Username: </td>
      <td>
        <input type="text" name="username" />
      </td>
    </tr>
    <tr>
      <td>
        Password: </td>
      <td>
        <input type="text" name="password" />
      </td>
    </tr>
    <tr>
      <td>
        Retype Password: </td>
      <td>
        <input type="text" name="passwordconf" />
      </td>
    </tr>
    <tr>
      <td>
        Email Address: </td>
      <td>
        <input type="text" name="email" />
      </td>
    </tr>
    <tr>
      <td colspan="2" align="center">
        <input type="submit" value="Create User" name="submit" />
      </td>
    </tr>
  </table>
</form>

</body>
</html>


<?php
if ( isset ( $_POST[ 'submit' ] ) ) {

  if ( $_POST[ 'username' ] ) {
    $username = $_POST[ 'username' ];
    $username = trim( $username) ; // Remove spaces
  }
  else {
    echo "Please enter a username.<br /><br />";
    die;
  }

 // And so on....

  mysql_pconnect( 'localhost', 'root', '' );
  mysql_query( "INSERT INTO 'users' . 'user_info'
                ('username', 'password', 'email', 'user_admin_level')
                VALUES ('" . $username . "', '" . md5( $password ) . "', '" . $email . "', '1');" );
}
?>

您可以按照建议安装本地服务器进行测试,或将文件上传到您的 ISP 服务器。

希望这可以帮助。

于 2012-09-18T06:54:11.817 回答
0

尝试显示 $errors 和大小(print_r($errors); echo count($errors);),看看它是否真的没有内容。

另外我会将if(!$username)更改为if (empty($username)) + 接受用户输入为 $var = $_POST['varname'] 是非常糟糕的做法。

此外,数组始终以键 0 开头(您手动将其分配给键 1)。要简单地将元素添加到数组中,请使用$errors[] = "you forgot something";

我个人建议您从 Drupal/cakePHP/phpBB/...等项目中选择登录/会话类。

于 2012-09-18T06:09:24.430 回答