Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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_Session_Mysqli - Fatal编程技术网

Php 会话签入用户页

Php 会话签入用户页,php,mysql,session,mysqli,Php,Mysql,Session,Mysqli,因此,有很多关于会话的帖子,但是,如果用户注销并试图访问仅限成员的页面,那么在将用户重定向到另一个页面时,这些帖子都不够清晰。我正在寻找一旦注销就无法返回的会话。可以理解的是,这将需要java脚本,相反,我希望禁用将web地址直接复制和粘贴到浏览器中,如果他们这样做了,并且他们没有登录,他们应该重定向到登录页面。这是密码 **所有成员页面均以以下内容开头: if( !isset( $_SESSION ) ){ session_start(); }else{ hea

因此,有很多关于会话的帖子,但是,如果用户注销并试图访问仅限成员的页面,那么在将用户重定向到另一个页面时,这些帖子都不够清晰。我正在寻找一旦注销就无法返回的会话。可以理解的是,这将需要java脚本,相反,我希望禁用将web地址直接复制和粘贴到浏览器中,如果他们这样做了,并且他们没有登录,他们应该重定向到登录页面。这是密码

**所有成员页面均以以下内容开头:

if( !isset( $_SESSION ) ){
    session_start();        
}else{
    header("Location:login.php");
}

include("connection.php");
**连接页面只是连接到数据库,简单的名称和密码或死亡

**su.php。此页面是登录或注册时启动会话的页面。记录我们的日志实际上会将它们注销,同样的问题是,任何人都可以输入profile.php的地址并将其拉出来

if( !isset( $_SESSION ) ){
    session_start();
}

    if($_GET["logout"]==1 AND $_SESSION['id']) { session_destroy();

            header("Location:logout.php");          
    }

include("connection.php");

if ($_POST['submit']=="Sign Up") {

    if (!$_POST['email']) $error.="<br />Please enter your email";
        else if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) $error.="<br />Please enter a valid email address";

    if (!$_POST['password']) $error.="<br />Please enter your password";
        else {

        if (strlen($_POST['password'])<8) $error.="<br />Please enter a password with at least 8 characters";
        if (!preg_match('`[A-Z]`', $_POST['password'])) $error.="<br />Please enter at least 1 capital letter";

        }

     if ($error) $error = "There were error(s) in your signup details:".$error;
     else {


        $query = "SELECT * FROM `users` WHERE email='".mysqli_real_escape_string($link, $_POST['email'])."'";

        $result = mysqli_query($link, $query);

        $results = mysqli_num_rows($result);

        if ($results) $error = "That email address is already registered";

        else {

            $query="INSERT INTO `users` (`email`, `password`) VALUES('".mysqli_real_escape_string($link, $_POST['email'])."', '".md5(md5($_POST['email']).$_POST['password'])."')";

            mysqli_query($link, $query);

            $message = "You've been signed up!";

            $_SESSION['id']=mysqli_insert_id($link);              

            header("Location:registration.php");

        }

    }

}

 if ($_POST['submit']=="Log In") {

    $query="SELECT * FROM `users` WHERE email='".mysqli_real_escape_string($link, $_POST['loginemail'])."' AND password='".md5(md5($_POST['loginemail']).$_POST['loginpassword'])."' LIMIT 1";

    $result = mysqli_query($link, $query);

    $row = mysqli_fetch_array($result);

    if ($row) {

        $_SESSION['id']=$row['id'];

            header("Location:dashboard.php");

        } else {

         $loginerror = "We could not find a user with that email and password. Please try again.";

        }

    }   
if(!isset($\u会话)){
会话_start();
}
如果($_GET[“logout”]==1和$_SESSION['id']){SESSION_destroy();
标题(“位置:logout.php”);
}
包括(“connection.php”);
如果($_POST['submit']==“注册”){
如果(!$\u POST['email'])$错误=“
请输入您的电子邮件”; 否则如果(!filter_var($_POST['email'],filter_VALIDATE_email))$错误。=“
请输入有效的电子邮件地址”; 如果(!$\u POST['password'])$错误。=“
请输入您的密码”; 否则{ 如果(strlen($_POST['password'])

成员页面内容

<?php
}
else
{
 header("Location:login.php");
}
?>

说明:
首先,您应该启动会话,然后检查您传递的会话变量是否存在于该成员页面中

或者你可以简单地

<?php
session_start();
if(!isset($_SESSION['id']))
{
 header("Location:login.php");
}
?>


在页面顶部

在每个页面的开头包含一个会话检查,并相应地重定向。我们通常创建一个包含在每个页面顶部的文件,用于测试某些会话变量。如果没有这些变量,我们将重定向。如果用户可以简单地返回并访问任何缓存页面,则无法在PHP中进行检查在浏览器中。如果要强制执行“注销”状态下,您必须使所有页面的html不可缓存,强制用户浏览器在每次加载页面时获取新副本。使用
mysqli
时,您应该使用参数化查询,并将用户数据添加到查询中。不要使用手动转义和字符串连接来完成此操作,因为这样会使这是一个错误,造成了严重的后果。那么代码会是什么样子呢?你应该解释为什么会有帮助。谢谢你问@Felix,但Anthony在最后的评论中只问了代码。Stack overflow是一个问答网站,一个公共网站。你的答案不仅指向原始海报,而且指向互联网用户n也是。因此,不要假设你的答案不需要解释,因为op理解。我将标记缺少上下文的答案,并且这些答案在这里没有得到高度重视。你现在的答案,即使缺少一些格式,可能比最初出现的几行更有用。
<?php
session_start();
if(!isset($_SESSION['id']))
{
 header("Location:login.php");
}
?>