我是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。
答案 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或没有启动服务
确保安装了这些软件包:安装了apache,php5,php5-mysql。 (*如何操作取决于系统,在ubuntu中通过运行来安装packeges:sudo apt-get install package name in centos:yum install package name)
确保启动apache服务并且没有错误。通常是service apache2 start
或service httpd start
或/etc/init.d/httpd restart
最后在测试脚本之前,创建一个只有<?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>";
?>