首页 > 解决方案 > 如何在 href 中传递 $_SESSION 凭据以访问特定的 HTML 页面?

问题描述

我需要在 a 的 href 中从 php (ValidationLogin.php) 传递一些变量(电子邮件、密码和 ID),以访问特定于登录用户的 HTML 页面。你能告诉我如何将这个变量传递给我的href吗?不要担心 SQL 注入,我稍后会修复它...

代码:ValidationLogin:(我将我的电子邮件和密码传递到会话中以在后面使用它)

<?php
// connect to the database
$db = new mysqli('', '', '', ''); //This is normaly filled and not empty

if ($db->connect_error) 
{
    die("Connection failed: " . $db->connect_error);
}


$arr = array();

$Email = $_REQUEST['email'];
$Passwd = $_REQUEST['passwd'];


$Query = "SELECT Passwd FROM place WHERE Email = '$Email'";
$DBResult = mysqli_query($db, $Query);
$DB_Hashed_Passwd = mysqli_fetch_assoc($DBResult);
$Hashed_Passwd = $DB_Hashed_Passwd["Passwd"];

if (password_verify($Passwd, $Hashed_Passwd)) 
{   
    $Query = "SELECT Id, Firstname FROM place WHERE Email = '$Email'";
    $DBResult = mysqli_query($db, $Query);
    $Place = mysqli_fetch_assoc($DBResult);

    array_push($arr,$Place["Id"]);
    array_push($arr,$Place["Firstname"]);

    session_start();
    $_SESSION['email'] = $Email;
    $_SESSION['passwd'] = $Passwd;

    echo json_encode($arr);
} 
else
{
    echo json_encode(null);
}

mysqli_close($db);  
   ?>

index.php:(在此页面上,我有一个将我重定向到特定页面的按钮,因此我需要在 href 中传递电子邮件和密码-> 此凭据在会话中处于活动状态,但我不知道如何传递他们进入href):

<?php

    $email = $_SESSION['email'];
    $passwd = $_SESSION['passwd'];

    if(isset($_SESSION['email']))
    {
        echo '<a href="./DisplayDrink.php?email=$email&passwd=$passwd"><button><i class="fa fa-edit"></i>&nbsp; Manage My Drinks</button></a>';
    }

?>

有人可以告诉我如何解决它或告诉我更好的吗?

多谢你们!

标签: phphtmlsession

解决方案


会话变量应该可用,您不必将它们作为参数传递。

session_start();应该在检查它们之前调用:

<?php

    session_start();
    $email = $_SESSION['email'];
    $passwd = $_SESSION['passwd'];

    if(isset($_SESSION['email'])) {
        echo '<a href="./DisplayDrink.php?email=$email&passwd=$passwd"><button><i class="fa fa-edit"></i>&nbsp; Manage My Drinks</button></a>';
    }
?>

推荐阅读