Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用会话的PHP中的注销问题_Php_Mysql_Html - Fatal编程技术网

使用会话的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

我正在尝试为一个页面创建一个登录和注销脚本,但由于某些原因,它对我来说不是很好。在我尝试注销之前,它似乎工作正常。它似乎破坏了会话变量,但它仍然允许我查看页面。 这是我的登录码:

代码: login.php

<?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();你必须把它按那个顺序排列