Php 如果用户没有';你没有登录吗?
我的登录页面login.php有以下代码:Php 如果用户没有';你没有登录吗?,php,mysql,redirect,login,mysqli,Php,Mysql,Redirect,Login,Mysqli,我的登录页面login.php有以下代码: <form method="post" action="confirmLoginCredentials.php"> <h2>LOGIN</h2> <p>Username: <input type="text" name="username" /></p> <p>Password: <input type="password" name="passw
<form method="post" action="confirmLoginCredentials.php">
<h2>LOGIN</h2>
<p>Username: <input type="text" name="username" /></p>
<p>Password: <input type="password" name="password" /></p>
<p><input type="submit" name="submit" value="Login" /></p>
</form>
<?php
session_start();
if(empty($_SESSION["username"])){ /* IF NO USERNAME REGISTERED TO THE SESSION VARIABLE */
header("LOCATION:login.php"); /* REDIRECT USER TO LOGIN PAGE */
}
?>
登录
用户名:
密码:
提交后,它将重定向到confirmLoginCredentials.php,即:
<?php
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
require_once 'config.php';
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$q = "SELECT first_name, last_name FROM users WHERE user_name = '$username' AND password = '$password'";
$result = $mysqli->query($q) or die(mysqli_error($mysqli));
if (!mysqli_num_rows($result) == 1) {
header("Location: login.php");
}
else {
setcookie('authorized', 1, 0);
header("Location: index.php");
}
?>
将此内容放在所有页面的顶部:
if ($_COOKIE['authorized'] != '1'){
header("Location: login.php");
exit();
}
将此内容放在所有页面的顶部:
if ($_COOKIE['authorized'] != '1'){
header("Location: login.php");
exit();
}
注:
- 您可以使用函数来实现您的目标
- 不要将
mysql\u*
函数与mysqli\u*
- 最好使用
mysqli_*prepared语句
,这样就不必对每个变量进行转义,这是一种更好的防止错误发生的方法
您的config.php:
<?php
$mysqli = new mysqli("DB_HOST", "DB_USER", "DB_PASSWORD", "DB_NAME"); /* REPLACE NECESSARY DATA INSIDE */
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
?>
额外说明:
- 您应该有
session_start()如果要使用会话变量或函数,请在代码开头使用code>
注意:
- 您可以使用函数来实现您的目标
- 不要将
mysql\u*
函数与mysqli\u*
- 最好使用
mysqli_*prepared语句
,这样就不必对每个变量进行转义,这是一种更好的防止错误发生的方法
您的config.php:
<?php
$mysqli = new mysqli("DB_HOST", "DB_USER", "DB_PASSWORD", "DB_NAME"); /* REPLACE NECESSARY DATA INSIDE */
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
?>
额外说明:
- 您应该有
session_start()如果要使用会话变量或函数,请在代码开头使用code>
一方面,你在混合MySQL API,所以我看不出这是怎么回事。除了弗雷德的观点,这是真的,混合了MySQL
\和mysqli*
。你可以使用$\u SESSION
函数来实现你的目标。在我的观点中,LoganWayne关于使用$\u SESSION
的建议是正确的。首先,我认为你在混合使用MySQL API,所以我不知道这可能如何工作。除了Fred的观点,这是真的,混合了mysql和mysqli。您可以使用$\u SESSION
函数来实现您的目标。在我的观点中,LoganWayne关于使用$\u SESSION
的建议是正确的。我认为使用头文件更简单、更安全。将其放在一个文件中,并在每个页面中包含头文件,即包含“header.php”;如果您希望以后进行更改,并且不想手动更新每个页面,则此选项会更好。@earle Davies如果($_COOKIE['authorized']!=“1”){header(“Location:login.php”);exit();}不起作用,当我把它放在每一页的顶部时,我从mysql数据库中提取的内容就会消失。我认为你的cookie实际上没有被设置。cookie的第二个参数应该是值,而不仅仅是1,因此需要用撇号或引号将其括起来<代码>设置cookie('authorized','1',0)代码>或setcookie('authorized','1',0)代码>或使用头文件。将其放在一个文件中,并在每个页面中包含头文件,即包含“header.php”;如果您希望以后进行更改,并且不想手动更新每个页面,则此选项会更好。@earle Davies如果($_COOKIE['authorized']!=“1”){header(“Location:login.php”);exit();}不起作用,当我把它放在每一页的顶部时,我从mysql数据库中提取的内容就会消失。我认为你的cookie实际上没有被设置。cookie的第二个参数应该是值,而不仅仅是1,因此需要用撇号或引号将其括起来<代码>设置cookie('authorized','1',0)代码>或setcookie('authorized','1',0)代码>我会添加一个警告,密码应该被加密和散列;可能还有一个链接,一个快速通读的链接,它将展示构建一个安全的web身份验证系统有多么困难。通常,使用一个经过彻底测试和验证的库或框架要比使用自己的库或框架要好;并且可能是一个链接,一个快速通读,它将展示构建一个安全的web身份验证系统有多么困难。通常,使用一个经过彻底测试和验证的库或框架比尝试自己滚动要好。
<?php
session_start();
if(!empty($_SESSION["username"])){ /* IF USERNAME IS ALREADY ASSIGNED ON SESSION VARIABLE */
header("LOCATION:index.php"); /* REDIRECT USER TO INDEX PAGE */
}
?>
<form method="post" action="confirmLoginCredentials.php">
<h2>LOGIN</h2>
<p>Username: <input type="text" name="username" /></p>
<p>Password: <input type="password" name="password" /></p>
<p><input type="submit" name="submit" value="Login" /></p>
</form>
<?php
session_start();
unset($_SESSION["username"]);
header("LOCATION:login.php");
?>