0
目前,我的网站在数据库中有一个包含用户名和密码的表。前端有2个文本框和一个登录按钮。一旦用户填写完这两个字段并单击登录,它将检查用户名和密码是否与数据库相匹配,如果是,请让他们进入并设置会话变量以检查entier站点。这足够安全吗?我如何将其转换为表单身份验证?我不想扔掉我的登录表。如果我要将其转换为表单身份验证,我还可以使用它吗?任何人都可以指点我或告诉我如何做到这一点?由于自定义身份验证以形成身份验证
目前,我的网站在数据库中有一个包含用户名和密码的表。前端有2个文本框和一个登录按钮。一旦用户填写完这两个字段并单击登录,它将检查用户名和密码是否与数据库相匹配,如果是,请让他们进入并设置会话变量以检查entier站点。这足够安全吗?我如何将其转换为表单身份验证?我不想扔掉我的登录表。如果我要将其转换为表单身份验证,我还可以使用它吗?任何人都可以指点我或告诉我如何做到这一点?由于自定义身份验证以形成身份验证
我使用标准的登录是somethig这样的:
的index.html:
<form action="login.php" method="post">
<table width="100%" border="0" style = "border-top: 2px solid #CCC; padding-top: 15px;">
<tr>
<td><input type="text" class="text_box" placeholder="Usuario" name="user" id="user"></td>
</tr>
<tr>
<td><input type="password" class="text_box" placeholder="Contraseña" name="pass" id="pass"></td>
</tr>
<tr>
<td>
<?php
show_message();
?>
<input type="submit" value="Ingresar" class="boton_submit">
</td>
</tr>
</table>
</form>
,而PHP的...
<?php
if(isset($_POST["user"]) && isset($_POST["pass"])){
include('conect_to_database.php');
$user = $_POST["user"];
$pass = $_POST["pass"];
if(!filter_var($_POST["user"], FILTER_VALIDATE_EMAIL)) {
//Not a valid email ... sends back to login form
header('Location: index.php') ;
exit();
}
$query = "SELECT id FROM user where user = ? and pass = ? LIMIT 1";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("ss", $user, $pass);
$stmt->execute();
$stmt->bind_result($id);
while ($stmt->fetch()) {
//set your session variable
header('Location: ../../control_panel.php') ;
exit();
}
//echo invalid user... sends back to login form
header('Location: index.php') ;
}
?>
我也建议检查特殊用户名和密码都是字符。
此外,你不应该在你的数据库中存储密码。您应该使用特殊算法存储真实密码的哈希值。
是的我明白不把密码存储在数据库中的文本我只想找出它是否安全,而不是表单身份验证?两者有什么不同? – user3731575 2014-10-08 19:26:10