gpt4 book ai didi

php - 如何在使用 session 时从 PHP 中的 MySQL 表中回显信息。

转载 作者:太空宇宙 更新时间:2023-11-03 11:18:25 24 4
gpt4 key购买 nike

我正在使用 session 将用户信息从一个页面传递到另一个页面。但是,我认为我可能针对我的特殊需要使用了错误的概念。这是我正在尝试做的事情:

  1. 当用户登录时,表单操作会发送到我在下面提供的 login.php:

登录.php

$loginemail = $_POST['loginemail'];     

$loginpassword = md5($_POST['loginpassword']);

$con = mysql_connect("xxxx","database","pass");
if (!$con)
{
die('Could not connect: ' .mysql_error());
}

mysql_select_db("db", $con);

$result = mysql_query("SELECT * FROM Members
WHERE fldEmail='$loginemail'
and Password='$loginpassword'");


//check if successful
if($result){
if(mysql_num_rows($result) == 1){
session_start();
$_SESSION['loggedin'] = 1; // store session data
$_SESSION['loginemail'] = fldEmail;
header("Location: main.php"); }
}
mysql_close($con);
  1. 现在,为了在整个网站上使用 $_SESSION['loggedin'] 来处理需要授权的页面,我制作了一个 'auth.php',它将检查用户是否已登录。

下面提供了“auth.php”:

session_start();        
if($_SESSION['loggedin'] != 1){
header("Location: index.php"); }
  1. 现在的重点是,当您登录时,您会通过标题从 login.php 定向到 main.php。如何回显存储在 main.php 上 MySQL 的“fldFullName”列中的用户全名?我是否必须像在 login.php 中那样重新连接?还是有另一种方法可以简单地从 MySQL 表中回显用户名?这是我现在在 main.php 中尝试做的,但是用户名没有出现:

    $result = mysql_query("SELECT * FROM Members  
    WHERE fldEmail='$loginemail'
    and Password='$loginpassword'");

    //check if successful
    if($result){
    if(mysql_num_rows($result) == 1){
    $row = mysql_fetch_array($result);
    echo '<span class="backgroundcolor">' . $row['fldFullName'] . '</span><br />' ;

最佳答案

Will I have to connect again just like I did in login.php?

是的。这是 PHP 和 mysql 的工作方式

or is there another way I can simply echo out the user's name from the MySQL table?

没有。要从 mysql 表中获取内容,您必须先连接。
您可以将连接语句放入某个配置文件中,并将其包含在所有脚本中。

How can I echo out the user's fullname which is stored in 'fldFullName' column in MySQL on main.php?

您需要一些标识符才能从数据库中获取正确的行。电子邮件可能有效,但强烈建议改用自动增量 ID 字段,该字段将存储在 session 中。
现在你的后一个代码片段中没有 $loginemail 也没有 $loginpassword ,是吗?

还有一些关于你的代码的注释

  1. 任何 header("Location: "); 语句必须跟在 exit; 之后。或者根本就没有保护。

  2. 任何您要在引号中放入查询的数据,必须使用 mysql_real_escape_string() 函数进行转义。没有异常(exception)。

原来是这样

include $_SERVER['DOCUMENT_ROOT']."/dbconn.php";

$loginemail = $_POST['loginemail'];
$loginpassword = md5($_POST['loginpassword']);

$loginemail = mysql_real_escape_string($loginemail);
$loginpassword = mysql_real_escape_string($loginpassword);

$query = "SELECT * FROM Members WHERE fldEmail='$loginemail' and Password='$loginpassword'";
$result = mysql_query($query) or trigger_error(mysql_error().$query);

if($row = mysql_fetch_assoc($result)) {
session_start();
$_SESSION['userid'] = $row['id']; // store session data
header("Location: main.php");
exit;
}

和main.php部分

session_start();
if(!$_SESSION['userid']) {
header("Location: index.php");
exit;
}
include $_SERVER['DOCUMENT_ROOT']."/dbconn.php";

$sess_userid = mysql_real_escape_string($_SESSION['userid']);
$query = "SELECT * FROM Members WHERE id='$sess_userid'";
$result = mysql_query($query) or trigger_error(mysql_error().$query);
$row = mysql_fetch_assoc($result));

include 'template.php';

关于php - 如何在使用 session 时从 PHP 中的 MySQL 表中回显信息。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3233728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com