如何在PHP中通过电子邮件id使用会话获取表的另一个数据

如何在PHP中通过电子邮件id使用会话获取表的另一个数据,php,mysql,session,Php,Mysql,Session,我的桌名-人 我的表列 fname lname email password 我想通过电子邮件id或密码使用会话从表中获取fname。我想在登录后在另一个页面上显示fname。请帮帮我 session_start(); $cser = mysqli_connect("localhost", "root", "", "srptech") or die("connection failed:" . mysqli_error()); if (isset($_REQUEST['login

我的桌名-人 我的表列

    fname lname email password 
我想通过电子邮件id或密码使用会话从表中获取fname。我想在登录后在另一个页面上显示fname。请帮帮我

session_start();

$cser = mysqli_connect("localhost", "root", "", "srptech") or die("connection failed:" . mysqli_error());

if (isset($_REQUEST['login'])) {
    $c = $_REQUEST['fname'];
    $a = $_REQUEST['email'];
    $b = $_REQUEST['password'];

    $res = mysqli_query($cser, "select fname from persons where email='$a'and password='$b'");

    while ($row = mysql_fetch_array($res)) {
        $fname = $row['fname'];

        $_SESSION["user-name"] = $fname;

    }

    $result = mysqli_num_rows($res);
    if ($result == true) {
        $_SESSION["login"] = "1";

        $_SESSION["email-id"] = $a;

        header("location:my-account.php");
        exit();
        session_write_close();
    } else {
        header("location:index.php?err=1");
    }

}
另一个页面是my-account.php

session_start();

if (!isset($_SESSION["login"])) // $_SESSION is a variable and login is a SESSION name
{
    header("location:index.php");
} else {
    echo 'Welcome' . '<h3>' . $_SESSION["email-id"] . '</h3>';
    echo 'Welcome' . '<h3>' . $_SESSION["user-name"] . '</h3>';

}
session_start();
如果(!isset($\u SESSION[“login”])/$\u SESSION是变量,login是会话名称
{
标题(“location:index.php”);
}否则{
回显“欢迎”。“$\u会话[“电子邮件id]”;
回显“欢迎”。“$\u会话[“用户名]”;
}
电子邮件在另一页上回送,但不显示fname(回送)

错误-用户名无效。


如何在另一页上回显fname?请帮助我。

我更新了您的脚本,现在可以安全地使用不可能的SQL注入

<?php
    if (isset($_REQUEST['login']))
    {
        $Email = $_REQUEST['email'];
        $Password = $_REQUEST['password'];

        $DB = new mysqli("localhost", "root", "", "srptech");

        if ($DB->connect_errno)
        {
            printf("Connect failed: %s\n", $DB->connect_error);
            exit();
        }

        $STMT = $DB->prepare("SELECT `fname` FROM `persons` WHERE `email` = ? AND `password` = ? LIMIT 1");
        $STMT->bind_param("ss", $Email, $Password);
        $STMT->execute();
        $STMT->bind_result($FirstName);
        $STMT->fetch();
        $STMT->close();

        if ($FirstName)
        {
            session_start();

            $_SESSION["user-name"] = $FirstName;
            $_SESSION["login"] = "1";
            $_SESSION["email-id"] = $Email;

            header("location:my-account.php");
            exit();
        }

         header("location:index.php?err=1");
    }
?>


哎哟!这意味着您正在使用纯文本密码!!!PHP提供并请使用它们。如果您使用的是5.5之前的PHP版本,我还建议您使用一些合理的代码缩进。它帮助我们阅读代码,更重要的是,它将帮助您为自己的利益调试代码。您可能会被要求在几周/几个月内修改此代码,最终您会感谢我。您的脚本甚至可以在
MYSQLI_uuquo
PDO
API的更多侧注中使用:
标题(“location:index.php”)将不起作用,因为您在此处有输出:
?>我想从我的表中获取fname,并将其设置为另一页上的session和echo。请帮助我使用我的代码。“试试这个”答案,但不要解释为什么它能解决问题,很少能与最好的答案竞争。请包括你改变了什么以及为什么!旁注:a
丢失了@Ali Khazaee您的代码中有一个错误-错误是-------
解析错误:语法错误,在C:\xampp\htdocs\PHP\loginprocess.PHP的第19行
@ShaktiRana,请重试