gpt4 book ai didi

Php 不访问数据库

转载 作者:搜寻专家 更新时间:2023-10-30 20:40:33 25 4
gpt4 key购买 nike

我有一个名为 form1.php 的表单文件

<?PHP
//form.php
session_start();
?>
<!DOCTYPE HTML>
<html>
<head>
<title>form</title>
</head>

<body>
<?PHP if (isset ($_SESSION["notfound"])) { ?>
<h2 style="text-align:center">Wrong user name or password</h2>
<?PHP unset($_SESSION["notfound"]);}
if (isset ($_SESSION["empty"])) {?>
<h2 style="text-align:center">Empty</h2>
<?PHP unset($_SESSION["empty"]); }?>

<form name="signin" action="http://localhost/M1.php" method="post">
<table>
<tr>
<td>
<label>
Username<input type="text" name="name" size="32"/>
</label>
</td>
<td>
<label>
Password <input type="password" name="pass" size="32"/>
</label>
</td>
<td>
<input type="submit" value="Login" />
</td>
</tr>
</table>
</form>

和控制文件M1.php

<?php
$name=$_POST["name"];
$pass=$_POST["pass"];
if((!empty($name)) && (!empty($pass)))
{
session_start();
if($conection=mysql_connect("localhost","","")===false)
die("not connect to data base");

if(mysql_select_db('login',$conection) ===false)
die("data base not found");


$sql =sprintf("SELECT `password` FROM `signin` WHERE `username`= '%s' ",mysql_real_escape_string($name));

$dbpass=mysql_query($sql);

if ($dbpass==$pass)
{
$_SESSION["authenticated"]=true;
header("Location: http://localhost/home.php");
exit;
}
else //if ($dbpass===false)
{
$_SESSION["notfound"]=true;
header("Location: http://localhost/form1.php");
exit;
}
}
else
{
$_SESSION["empty"]=true;
header("Location: http://localhost/form1.php");
exit;
}
?>

*我正在使用 xampp 来运行它们我有包含表登录的数据库日志记录当我用我保存在登录表中的相同用户名和密码填写表单并单击提交时,将它返回到 form1.php 上, session 为“notfoun”当我提交空表单时,它会在不设置空 session 的情况下返回我 *

最佳答案

您不是从数据库中获取数据,而是根据 execute query = $pass 设置条件,这将始终为 false,因此更改为

$dbpass=mysql_query($sql);
$result = mysql_fetch_array($dbpass);
$passw = $result['password'];

if ($passw==$pass)
{
//logged

作为旁注,我想说几件事。首先我注意到你清理了你的输入,这是一个很好的做法,但你真的应该切换到准备好的声明 PDOmysqli这样您就可以避免 mysql injection 的任何风险,也是因为 mysql_* 函数已被弃用。第二次在数据库中以纯文本形式保存密码是一个非常糟糕的做法,你应该真正加密它并在数据库中保存密码的哈希值,关于这个有一篇很好的帖子 here .此外,我认为 session_start(); 应该放在文件的顶部才能正常工作。

关于Php 不访问数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22249441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com