PHP没有检测到错误但没有正确显示

时间:2014-03-11 07:41:01

标签: php mysql sql mysqli

我是PHP的新手,我有一个名为Login.php的文件,代码如下:

<html>
<body>
<?php
if(!isset($_POST['submit']))
{?>
    <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
        Username: <input type="text" name="username"><br>
        Password: <input type="password" name="password"><br>
        <input type="submit" name="submit" value="Login">
        Not Yet Registered? Register <a href="register.php">here</a>.
    </form>
<?php
}
else
{
    require_once("db_const.php");
    $mysqli = new MySQLi(DB_HOST, DB_USER, DB_PASS, DB_NAME);
    if($mysqli->connect_errno)
    {
        echo "MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_errno}";
        exit(); 
    }
    $username = $_POST['username'];
    $password = $_POST['password'];

    $sql = "select * from user where username like '{$username}' and password like '{$password}' limit 1";
    $result = $mysqli->query($sql);
    if($result->num_rows == 1)
    {
        echo "Invalid username/password";   
    }
    else
    {
        echo "Login Success!";  
    }
}
?>
</body>
</html>

但是当我在浏览器中运行它时,它看起来有点像这样:

用户名:
密码:
按钮登录尚未注册?在这里注册。 (“这里”是一个链接)

connect_errno){echo“MySQL错误号{$ mysqli-&gt; connect_errno}:{$ mysqli-&gt; connect_errno}”;出口(); } $ username = $ _POST ['username']; $ password = $ _POST ['password']; $ sql =“select * from user,其中用户名如'{$ username}',密码如'{$ password}'limit 1”; $ result = $ mysqli-&gt; query($ sql); if($ result-&gt; num_rows == 1){echo“用户名/密码无效”; } else {echo“登录成功!”; }}&gt;

我错过了什么或者我的php版本不兼容吗? (版本5.5.9) 我顺便使用xampp。

5 个答案:

答案 0 :(得分:0)

看起来脚本没有被解释为PHP。如果您检查浏览器源(ctrl-u / cmd -u),您将看到发送到浏览器的PHP文件的全部内容。 (>的{​​{1}}被解释为$mysqli->标记的结尾)

因此,您需要检查您的Web服务器以使其解释PHP。 您是否通过HTTP访问该文件?(请参阅this SO answer

毕竟你应该通过打开一个这样的简单脚本来验证PHP是否正在运行:

<?php

答案 1 :(得分:0)

你的逻辑错误

if($result->num_rows == 1)
{
    echo "Invalid username/password";   
}
else
{
    echo "Login Success!";  
}

if($ result-&gt; num_rows == 1)表示用户名&amp;密码正确。并打印“无效的用户名/密码”;

答案 2 :(得分:0)

这不是一个编程问题。 您可能没有安装apache或php5或没有启动服务

  1. 确保安装了这些软件包:安装了apache,php5,php5-mysql。 (*如何操作取决于系统,在ubuntu中通过运行来安装packeges:sudo apt-get install package name in centos:yum install package name)

  2. 确保启动apache服务并且没有错误。通常是service apache2 startservice httpd start/etc/init.d/httpd restart

  3. 最后在测试脚本之前,创建一个只有<?php phpinfo(); ?>作为内容的文件,并将其作为check_php.php保存在本地Web根目录中。在浏览器中以http://localhost/check_php.php打开文件,如果php正在运行,你将获得大量有用的信息,如果php无效,你可能无法安装php。

答案 3 :(得分:-1)

更改

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">

您错过了<?php代码

试试这个:

<html>
<body>

    <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
        Username: <input type="text" name="username"><br>
        Password: <input type="password" name="password"><br>
        <input type="submit" name="submit" value="Login">
        Not Yet Registered? Register <a href="register.php">here</a>.
    </form>

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

{
    require_once("db_const.php");
    $mysqli = new MySQLi(DB_HOST, DB_USER, DB_PASS, DB_NAME);
    if($mysqli->connect_errno)
    {
        echo "MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_errno}";
        exit(); 
    }
    $username = $_POST['username'];
    $password = $_POST['password'];

    $sql = "select * from user where username like '{$username}' and password like '{$password}' limit 1";
    $result = $mysqli->query($sql);
    if($result->num_rows == 1)
    {
        echo "Invalid username/password";   
    }
    else
    {
        echo "Login Success!";  
    }
}
?>
</body>
</html>

答案 4 :(得分:-1)

Php显然是第一个if语句不按原样打印。

问题似乎是第6行中缺少的“PHP”标记。

因为你只有这么少的html,你可以设置header()并回显html,使其变得更简单。

<?php
echo "<html>";
echo "<body>";
if(!isset($_POST['submit'])) {
    echo "<form action=\"".$_SERVER['PHP_SELF']."\" method='post'>";
    echo "Username: <input type='text' name='username'><br>";
    echo "Password: <input type='password' name='password'><br>";
    echo "<input type='submit' name='submit' value='Login'>";
    echo "Not Yet Registered? Register <a href='register.php'>here</a>.";
    echo "</form>";

}
else
{
    require_once("db_const.php");
    $mysqli = new MySQLi(DB_HOST, DB_USER, DB_PASS, DB_NAME);
    if($mysqli->connect_errno)
{
    echo "MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_errno}";
    exit(); 
}
$username = $_POST['username'];
$password = $_POST['password'];

$sql = "select * from user where username like '{$username}' and password like             '{$password}' limit 1";
$result = $mysqli->query($sql);
    if($result->num_rows == 1)
    {
        echo "Invalid username/password";   
    }
    else
    {
        echo "Login Success!";  
    }
}

echo "</body>";
echo "</html>";
?>