【问题标题】:Php Session Redirect PagePhp 会话重定向页面
【发布时间】:2014-09-02 05:19:44
【问题描述】:

好的,我这里有一个简单的 php 登录会话。有时会话会破坏,即使我不破坏会话。在我的 Index.php 中,有一个用于编辑记录的链接。我的问题是,如果会话破坏并且我单击编辑,则页面以模态或幻想框打开并显示 login.php,在我登录后它转到 index.html。我需要做的不是进入 index.html,而是需要重定向到带有 GET 值的 edit.php 以继续编辑过程。有什么帮助吗?

索引.php

<a class="fancybox" href="edit.php?pn='.$row["id"].'"><img src="images/edit.png"></a>

编辑.php

<?php 
session_start();
include('connect.php');
$tbl_name="login_admin";
if(! isset($_SESSION['id'])){
header('location:login.php');
exit;
}
$id = $_SESSION['id'];
$sql = $mysqli->query("SELECT * FROM $tbl_name WHERE username='$id'");
$accounts   = $sql->fetch_assoc();

$term= $mysqli->real_escape_string($_GET["pn"]);
?>

登录.php

<?php
require_once('connect2.php');

session_start();
$username = $_POST['username'];
$password = $_POST['password'];
$submit = $_POST['submit'];

if($username && $password){
$sql = sprintf("SELECT * FROM $tbl_name WHERE username='$username' AND password='$password'");
$result = @mysql_query($sql);
$accounts = @mysql_fetch_array($result);
}
if($accounts){
$_SESSION['id'] = $accounts['username'];
header("location:index.html");
exit;
}elseif($submit){
$msg = 'Invalid Username or Password';
}
?>

【问题讨论】:

  • 这是不可能的,因为当你登录时它总是重定向到主页。并且不要编辑页面或您上次会话被破坏的页面。

标签: php session


【解决方案1】:

很遗憾,您无法继续编辑过程,但您可以在登录后将用户重定向到编辑页面。

还有很多方法,我会展示其中的一种。

  1. 在将用户重定向到登录脚本之前,将其原始 URL 保存到会话(另一种方法是将其作为 GET 参数传递给 login.php - 不要忘记以这种方式进行验证):

编辑.php:

<?php 
session_start();
include('connect.php');
$tbl_name="login_admin";
if(! isset($_SESSION['id'])){
    $_SESSION['original_url']=$_SERVER['REQUEST_URI']
    header('location:login.php');
    exit;
}
// rest of the code.....
  1. 然后将用户重定向到该页面而不是默认的 index.html 页面

登录.php:

<?php
require_once('connect2.php');

session_start();
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$submit = $_POST['submit'];

// Security note: see I've sanitized $username and $password with mysql_real_escape_string() to avoid SQL injection
if($username && $password){
    $sql = sprintf("SELECT * FROM $tbl_name WHERE username='$username' AND password='$password'");
    $result = mysql_query($sql);
    $accounts = mysql_fetch_array($result);
}

// when account was found store identity to session
if($accounts){
    $_SESSION['id'] = $accounts['username'];

    if (isset($_SESSION['original_url']) {
        // if user came from internal url, redirect to it and remove it from session
        $originalUrl = $_SESSION['original_url'];
        unset($_SESSION['original_url']);
        header("location:".$originalUrl);
        exit;
    } else {
        // redirect user to default page after login
        header("location:index.html");
        exit;
    }

} elseif($submit){
    // login form was sent, but user with given password not found
    $msg = 'Invalid Username or Password';
}
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-02
    • 2023-03-08
    • 2018-03-08
    • 2021-01-12
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多