我相信这是一个非常基本的问题,但我开始使用PHP进行编码,所以我真的无法独自完成:
我试图解决一个奇怪的问题已经有2天了。我正在使用XAMPP作为我的数据库及其表,目的是创建一个登录和注册系统。
这是我的用户表:
CREATE TABLE `playware`.`users` (
`user_id` INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 25 ) NOT NULL ,
`surname` VARCHAR( 25 ) NOT NULL ,
`email` VARCHAR( 35 ) NOT NULL ,
`telephone` VARCHAR( 9 ) NOT NULL ,
`password` VARCHAR( 50 ) NOT NULL ,
UNIQUE (`email`)
) ENGINE = MYISAM ;
寄存器.php文件正在工作(它正确地将用户添加到表中)但是当我尝试登录时我就是不能。
所以我在login.php文件上做了这个,只是为了测试它是否得到了行:
<?php
include_once 'connect.php';
session_start();
if(isset($_SESSION['user'])!="")
{
header("Location: index_home.php");
}
$email = $_POST["email"];
$upass = $_POST["password"];
$sql="SELECT email FROM users";
$res=$conn->query($sql);
if($res->num_rows>0)
{
while($row=$res->fetch_assoc());
{
if($row["email"]==$email)
{
echo"Writting email: ".$row["email"]." - done writting.";
}
}
}
?>
我一直尝试在白色屏幕上执行此结果,仅此时它应该显示用户电子邮件。有人知道如何解决这个问题吗?
================================的更新 ======= =========================== 错误是:
while($row=$res->fetch_assoc());
{
//Stuff here ...
}
它不能采取“;”因为它取消了输出。所以修复是:
while($row=$res->fetch_assoc())
(...)
正如我所料,这是一个基本错误......感谢那些支持我的人。
答案 0 :(得分:1)
您在此处有错误:
if(isset($_SESSION['user'])!="")
您无法以这种方式检查变量是否设置且不等于空白。相反,你应该这样做:
if(isset($_SESSION['user']) && $_SESSION['user']!="")
这里有另一个错误,它会阻止脚本输出任何内容:
while($row=$res->fetch_assoc());
---------remove the -----------^
由于这是有效的语法,您可能在错误报告中看不到任何内容。
你真的应该使用PHP的built-in functions来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用password_hash()
compatibility pack。
另外,请务必使用prepared和/或PDO的MySQLi语句,并考虑使用PDO it's really pretty easy。