php登录页面无法工作
惠。。我是php/mysql的新手。你能帮帮我吗?我一直都在使用“错误的用户名或密码”。 这里是我的login.phpphp登录页面无法工作,php,mysql,Php,Mysql,惠。。我是php/mysql的新手。你能帮帮我吗?我一直都在使用“错误的用户名或密码”。 这里是我的login.php <code> <table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <form method="post" action="checklogi
<code>
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form method="post" action="checklogin.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3">
<strong>Member Login </strong>
</td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294">
<input name="username" type="text" id="username"/>
</td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td>
<input name="password" type="password" id="password"/>
</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>
<input type="submit" name="Submit" value="Login"/>
</td>
</tr>
</table>
</td>
</form>
</tr>
</table>
</code>
我在连接数据库方面没有问题,但我看不出错误在哪里。请帮帮我。做一个错误报告(E\u ALL)代码>和ini_集('display_errors','on')在文件的第一行中输入code>,以便php开始对话
您是否有一个名为user\u id
的表,还是输入错误
$sql="SELECT user, pass FROM user_id WHERE user='$username' and pass='$password'";
$result=mysql_query($sql);
无论如何,作为编程规则,永远不要假设函数的输出。在执行任何其他操作之前,始终检查其返回值$result
:
if(!$result) die(mysql_error());
现在您将知道是否有任何sql错误本身。然后你就可以解决你的问题了。其余代码在php中的第一天就可以了。在今天学习之后,您可以在明天学习其他1..4点。通过查看以下错误消息:
警告:mysqli_query()至少需要2个参数,1个参数在第18行的C:\xampp\htdocs\exa\checklogin.php中给出
警告:mysqli_num_rows()要求参数1为mysqli_结果,在第20行的C:\xampp\htdocs\exa\checklogin.php中为空
您似乎在混合使用mysqli.*
和mysql.*
函数(您的代码>检查登录.php < /c>文件包含<代码> MySqL**<代码>函数,您的错误信息是基于<代码> MySqLI**<代码>,以及<>强>在纯文本中存储密码;这是非常危险的>,您应该考虑使用不同的方法,如PHP的功能。
我已经为您准备了一些版本,但是有一些东西是不推荐的
比如,
从PHP 5.3.0开始,此函数已被弃用,并从PHP 5.4.0开始删除
因此,您可能需要更改:
session_register("username");
session_register("password");
致:
或:
但是,我不能完全确定您是否在另一个文件中使用了session\u register(“用户名”)
和session\u register(“密码”)
MySQL_uuu版本
<?php
session_start();
$con=mysqli_connect("host","username", "password", "database_name");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error(); }
$username = mysqli_real_escape_string($con,$_POST['username']);
$password = mysqli_real_escape_string($con,$_POST['password']);
$sql="SELECT user, pass FROM user_id WHERE user='$username' and pass='$password'";
$result = mysqli_query($con,$sql) or die(mysqli_error($con));
$count=mysqli_num_rows($result);
if($count==1) {
$_SESSION['username'] = '$username';
$_SESSION['password'] = '$password';
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
假设:
我将$result=mysql\u query($sql);
更改为$result=mysql\u query($sql,$con);
以将数据库连接传递到$result
<?php
session_start();
$db = mysql_connect("host","username", "password");
$db_selected = mysql_select_db('database_name', $db);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
mysql_real_escape_string($_POST['username']);
mysql_real_escape_string($_POST['password']);
$sql="SELECT user, pass FROM user_id WHERE user='$username' and pass='$password'";
if (mysql_query($sql, $con)) {
echo ("Database query successful");
}else {
die ("Database query failed: " .mysql_error());
}
$result=mysql_query($sql,$con);
$count=mysql_num_rows($result);
if($count==1) {
$_SESSION['username'] = '$username';
$_SESSION['password'] = '$password';
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
登录成功
这段代码已经过时多年了。1.mysql_*已被弃用。2.会话_register()不推荐使用。3.不需要带斜杠,因为不推荐使用魔术引号。4.引入长缩进ago@Bojangles可能只是SO的格式。您确定数据库中有匹配的用户名密码吗?不推荐意味着停止使用它,因为它的旧用户id是我的表名。感谢“错误报告(E_ALL)”和ini_设置('display_errors','on');'提示,现在我可以看到问题行了。但我仍在尝试修复它。我的登录页面仍然不工作。哪一个是问题行?警告:mysqli_query()需要至少2个参数,1个在第18行的C:\xampp\htdocs\exa\checklogin.php中给出警告:mysqli_num_rows()预期参数1为mysqli_result,在第20行的C:\xampp\htdocs\exa\checklogin.php中为空,谢谢,但我尝试了,但仍然出现错误。我也在用完整代码编辑我的帖子。希望您能帮助我。不客气。您能告诉我您遇到了哪一个错误吗?@user3259186这是错误:警告:stripslashes()只需要1个参数,第15行的C:\xampp\htdocs\exa\checklogin.php中给出2个警告:mysqli\u real\u escape\u string()只需要2个参数,第15行的C:\xampp\htdocs\exa\checklogin.php中给出1个警告:stripslashes()只需要1个参数,第16行C:\xampp\htdocs\exa\checklogin.php中给出2个警告:mysqli\u real\u escape\u string()只需要2个参数,第16行C:\xampp\htdocs\exa\checklogin.php中给出1个错误的用户名或密码,方法是禁用“/$Username=mysqli\u real\u escape\u string\u string($con,$\u POST['Username'));//$password=mysqli\u real\u escape\u string(stripslashes($con,$\u POST['password']),替换为“$username=”($\u POST['username']);$password=”($\u POST['password']);“我正设法进入页面登录成功.php,但页面只显示空白页面。好,然后将其更改为$username=mysqli\u real\u escape\u string($con,$\u POST['username']))
和$password=mysqli\u real\u escape\u string($con,$\u POST['password']);
您不需要stripslashes
,因为mysqli\u real\u escape\u string
已经在处理任何非法字符。@user3259186和id您是否也使用我的示例进行DB连接?$con
参数用于DB连接。
$_SESSION['username'] = '$username';
$_SESSION['password'] = '$password';
<?php
session_start();
$db = mysql_connect("host","username", "password");
$db_selected = mysql_select_db('database_name', $db);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
mysql_real_escape_string($_POST['username']);
mysql_real_escape_string($_POST['password']);
$sql="SELECT user, pass FROM user_id WHERE user='$username' and pass='$password'";
if (mysql_query($sql, $con)) {
echo ("Database query successful");
}else {
die ("Database query failed: " .mysql_error());
}
$result=mysql_query($sql,$con);
$count=mysql_num_rows($result);
if($count==1) {
$_SESSION['username'] = '$username';
$_SESSION['password'] = '$password';
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
<?php
session_start();
$con=mysqli_connect("host","username", "password", "database_name");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error(); }
$username = mysqli_real_escape_string($con,$_POST['username']);
$password = mysqli_real_escape_string($con,$_POST['password']);
$sql="SELECT user, pass FROM user_id WHERE user='$username' and pass='$password'";
$result = mysqli_query($con,$sql) or die(mysqli_error($con));
$count=mysqli_num_rows($result);
if($count==1) {
$_SESSION['username'] = '$username';
$_SESSION['password'] = '$password';
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
<?php
session_start();
if(!isset($_SESSION['username'])){
header("location:login.php");
}
?>
<html>
<body>
Login Successful
</body>
</html>