使用会话的PHP中的注销问题
我正在尝试为一个页面创建一个登录和注销脚本,但由于某些原因,它对我来说不是很好。在我尝试注销之前,它似乎工作正常。它似乎破坏了会话变量,但它仍然允许我查看页面。 这是我的登录码: 代码: login.php使用会话的PHP中的注销问题,php,mysql,html,Php,Mysql,Html,我正在尝试为一个页面创建一个登录和注销脚本,但由于某些原因,它对我来说不是很好。在我尝试注销之前,它似乎工作正常。它似乎破坏了会话变量,但它仍然允许我查看页面。 这是我的登录码: 代码: login.php <?php // Use session variable on this page. This function must put on the top of page. session_start(); ////// Logout Section. Delete all sess
<?php
// Use session variable on this page. This function must put on the top of page.
session_start();
////// Logout Section. Delete all session variable.
session_destroy();
$Name=$_POST['Name'];
$Pass=$_POST['Pass'];
// To protect MySQL injection (more detail about MySQL injection)
$Name = stripslashes($Name);
$Pass = stripslashes($Pass);
$Name = mysql_real_escape_string($Name);
$Pass = mysql_real_escape_string($Pass);
$sql="SELECT * FROM reg1 WHERE uname='$Name' and pass='$Pass'";
$result=mysql_query($sql);
if(mysql_num_rows($result)!='0') // If match.
{
session_register("uname"); // Craete session username.
header("location:loged.php"); // Re-direct to loged.php
exit;
}else{ // If not match.
echo '<script type="text/javascript">
window.alert("Wrong UserName And Password");
window.location="index.php"
</script>';
}
// End Login authorize check.
?>
您正在设置会话,但无论是否设置,您都不会在任何位置检查会话。表示您没有检查用户是否已登录。。你需要这样做
if (!isset($_SESSION['uname'])) /*If uname not set then it is a guest*/
{
//page contents for guest user
}
else
{
//page for authenticated user.
}
您正在设置会话,但无论是否设置,都不会在任何位置检查会话。表示您没有检查用户是否已登录。。你需要这样做
if (!isset($_SESSION['uname'])) /*If uname not set then it is a guest*/
{
//page contents for guest user
}
else
{
//page for authenticated user.
}
在您希望仅由登录用户访问的页面中,是否检查$_SESSION['uname']的值?在您希望仅由登录用户访问的页面中,是否检查$_SESSION['uname']的值?我认为只有SESSION\u destroy();功能足够好,可以让您注销。您不需要取消设置“uname”。对于用户登录后出现的页面,您必须在每个页面的顶部应用一些会话检查功能…我认为只有会话_destroy();功能足够好,可以让您注销。您不需要取消设置“uname”。对于用户登录后出现的页面,则必须在每个页面顶部应用一些会话检查功能。session\u register()。替换:
session_register("uname"); // Craete session username.
与:
注销(替换会话\u destroy()
):
最终结果如下所示:
<?php
// Use session variable on this page. This function must put on the top of page.
session_start();
// Logout Section
if (isset($_SESSION['uname']))
unset($_SESSION['uname']);
// Login Section
$Name=$_POST['Name'];
$Pass=$_POST['Pass'];
// To protect MySQL injection (more detail about MySQL injection)
$Name = stripslashes($Name);
$Pass = stripslashes($Pass);
$Name = mysql_real_escape_string($Name);
$Pass = mysql_real_escape_string($Pass);
$sql="SELECT * FROM reg1 WHERE uname='$Name' and pass='$Pass'";
$result=mysql_query($sql);
if(mysql_num_rows($result)!='0') // If match. {
$row = mysql_fetch_assoc($result);
$_SESSION['uname'] = $row['uname'];
header("Location: loged.php"); // Re-direct to loged.php
exit;
} else { // If not match.
echo '<script type="text/javascript">
window.alert("Wrong UserName And Password");
window.location="index.php"
</script>';
}
?>
如何检查是否已登录:
session_start();
if (isset($_SESSION['uname']))
{
// logged in
}
else
{
// not logged in
}
自PHP5.3.0起,session\u register()。替换:
session_register("uname"); // Craete session username.
与:
注销(替换会话\u destroy()
):
最终结果如下所示:
<?php
// Use session variable on this page. This function must put on the top of page.
session_start();
// Logout Section
if (isset($_SESSION['uname']))
unset($_SESSION['uname']);
// Login Section
$Name=$_POST['Name'];
$Pass=$_POST['Pass'];
// To protect MySQL injection (more detail about MySQL injection)
$Name = stripslashes($Name);
$Pass = stripslashes($Pass);
$Name = mysql_real_escape_string($Name);
$Pass = mysql_real_escape_string($Pass);
$sql="SELECT * FROM reg1 WHERE uname='$Name' and pass='$Pass'";
$result=mysql_query($sql);
if(mysql_num_rows($result)!='0') // If match. {
$row = mysql_fetch_assoc($result);
$_SESSION['uname'] = $row['uname'];
header("Location: loged.php"); // Re-direct to loged.php
exit;
} else { // If not match.
echo '<script type="text/javascript">
window.alert("Wrong UserName And Password");
window.location="index.php"
</script>';
}
?>
如何检查是否已登录:
session_start();
if (isset($_SESSION['uname']))
{
// logged in
}
else
{
// not logged in
}
如果uname是用于验证用户是否已登录的值,则应尝试将以下内容放在第一位:
会话_destroy();然后是unset($\u会话['uname'])
我希望这适用于您……如果uname是用于验证用户是否已登录的值,则应尝试将其放在第一位:
会话_destroy();然后是unset($\u会话['uname'])
我希望这对你有用……$Name=stripslashes($Name)
——如果禁用了magic\u quotes
,这可能会破坏数据。如何检查用户是否登录到loged.php?请阅读会话销毁手册,了解完全销毁会话还需要做些什么:$Name=stripslashes($Name)
---如果关闭了magic\u quotes
,这可能会中断数据。如何检查用户是否登录到loged.php?阅读会话销毁手册,了解要完全销毁会话还需要做些什么:hi Richard86感谢您的帮助,但它仍然无法正常工作问题是……@Umesh shrivas您正在执行的任务欢迎我很抱歉它没用。据我所知,以下if
子句在使用我的注销脚本注销后仍然是真的if(isset($\u SESSION['uname'))
。是吗?嗨,Richard86,谢谢你的帮助,但它仍然不起作用。问题是……@Umesh shrivas,不客气!我很抱歉它没用。据我所知,以下if
子句在使用我的注销脚本注销后仍然是真的if(isset($\u SESSION['uname'))
。对吗?抱歉,这是我需要关闭会话时可以使用的东西:session_unset();会话_destroy();您必须按顺序排列抱歉,这是我需要关闭会话时可以使用的东西:session_unset();会话_destroy();你必须把它按那个顺序排列