Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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_Html_Email - Fatal编程技术网

Php 登录以获取用户名而不是电子邮件

Php 登录以获取用户名而不是电子邮件,php,html,email,Php,Html,Email,在使用电子邮件登录后,我一直在努力获取用户名。登录后,我可以获取电子邮件的名称,但不能获取用户名 请看下面login.php的代码: <form id="myForm" action="loginAction" name="login" method="POST"> <p> <label class="inputField" > Email Address : </label> </p>

在使用电子邮件登录后,我一直在努力获取用户名。登录后,我可以获取电子邮件的名称,但不能获取用户名

请看下面login.php的代码:

<form id="myForm" action="loginAction" name="login" method="POST">  
            <p> <label class="inputField" > Email Address : </label> </p>
            <p> <input class="registerField" id="emailid" name="email" required="required" type="text" placeholder="eg. john.wick@yahoo.com"/> <span class="warning" id="emailWarning"> </p>

            <p> <label class="inputField" > Password : </label> </p>
            <p> <input class="registerField" id="password" name="password" required="required" type="password" placeholder="Your password"/> </p>

            <p> <input name="submit" class="registerButton" type="submit" value="LOGIN"> </p>
        </form>
当它成功登录时,它将转到下面的页面

<?php
                ini_set('display_errors',1); 
                error_reporting(E_ALL);
                include 'dbconnect.php';

                if(isset($_SESSION['login']) && !empty($_SESSION['login'] )) {
                    $firstName = $_SESSION['firstName'];

                    echo "<p> <a href=\"profileUser\"> $firstName </a>";
                    echo "<img src=\"images/logo/account.png\" /> </p>";
                        } else {
                        echo "<a href=\"loginReg\"> Login/Register </a>";
                        echo "<img src=\"images/logo/account.png\" /> </p>";
                    }
            ?>
错误显示注意:未定义索引:firstName。若我在电子邮件中使用$\u会话,它会起作用,但我想显示用户的名字。有什么想法吗

session_start();
    $_SESSION['login'] = true;
    $_SESSION['username'] = $username;

    if ($_SESSION['login'] != '' || $_SESSION['login'] > 0 )

    echo $_SESSION['username'];
    echo $_SESSION['firstName'];
    echo $_SESSION['lastName'];
您试图输出$\u会话['firstName'],但$\u会话['firstName']不存在

您设置了$\u SESSION['username']=$username我认为$username只是电子邮件 但是您没有设置$\u会话['firstName']

获取您的loginrow并设置$_会话['firstName']=$fetchedRow['firstName']

您试图输出$\u会话['firstName'],但$\u会话['firstName']不存在

您设置了$\u SESSION['username']=$username我认为$username只是电子邮件 但是您没有设置$\u会话['firstName']

获取您的loginrow并设置$_会话['firstName']=$fetchedRow['firstName']

在loginAction.php中,未分配$\u会话['firstName']。这就是为什么在重定向之后,它没有被设置,所以试图访问它会产生未定义的索引错误

如果以后要访问用户信息行,最好只保存该行:

$loginSuccess = mysqli_query($mysqli, $loginUser) or die(mysqli_error($mysqli));
$loginRow = mysqli_num_rows($loginSuccess);

if($loginRow === 1) {

    session_start();
    $_SESSION['login'] = true;
    // fetch the values
    $user_info = $loginSuccess->fetch_assoc();
    $_SESSION['user_info'] = $user_info; // assign that row in the session for later use
然后,在该重定向页面上:

if(isset($_SESSION['login'])) {

    echo $_SESSION['user_info']['firstName'];
    // and others

}
旁注:在这种情况下使用PHP5.5比使用md5要好得多。在您的loginAction.PHP中还有一个适用于较小版本的PHP,未分配$\u会话['firstName']。这就是为什么在重定向之后,它没有被设置,所以试图访问它会产生未定义的索引错误

如果以后要访问用户信息行,最好只保存该行:

$loginSuccess = mysqli_query($mysqli, $loginUser) or die(mysqli_error($mysqli));
$loginRow = mysqli_num_rows($loginSuccess);

if($loginRow === 1) {

    session_start();
    $_SESSION['login'] = true;
    // fetch the values
    $user_info = $loginSuccess->fetch_assoc();
    $_SESSION['user_info'] = $user_info; // assign that row in the session for later use
然后,在该重定向页面上:

if(isset($_SESSION['login'])) {

    echo $_SESSION['user_info']['firstName'];
    // and others

}

旁注:在这种情况下使用PHP5.5比使用md5要好得多。对于较低版本的PHP,还有一个变量,您在会话变量中存储的是$username,它等于用户发送给您的输入。您只定义了$\u会话['username'],未定义firstName和lastName。如果我理解您想要正确执行的操作,您必须从数据库查询中获取结果并将其存储在这些变量上。

会话变量中存储的是$username,它等于用户发送给您的输入。您只定义了$\u会话['username'],未定义firstName和lastName。如果我理解您想要正确执行的操作,您必须从数据库查询中获取结果并将其存储在这些变量上。

您在哪里分配了$_SESSION['firstName'];?它位于loginAction.php的底部@itachii在您分配它的位置上方没有看到任何行。您在哪里分配了$_会话['firstName'];?它位于loginAction.php的底部@itachii在您指定的位置上方没有看到任何行。欢迎使用stackoverflow。通过像其他答案一样添加代码片段,可以提高答案的质量。那会更有帮助。欢迎来到stackoverflow。通过像其他答案一样添加代码片段,可以提高答案的质量。这将更有帮助。是的,这是非常好的解释,我试图使用这个答案,但我仍然不明白。我将获取firstName和lastName的值,我应该在哪里添加它?我应该把$\u SESSION[firstName]=$firstName放在$\u SESSION['user\u info']之后@Ghost@Anthosiast因为这个$user_信息将保存那些值registerPassword、emailAddress、firstName、lastName。没有理由分配每一个。它已经是一个数组了。访问这些值以及我上面给出的示例。echo$_会话['user_info']['lastName']];//和others@Fred-ii-谢谢,伙计,很快就要去拉拉岛了,在出发前要充分利用时间:欢迎你@Ghost我自己刚从那里回来哈哈Cheers@Anthosiast是的,您可以选择其中之一,也可以选择另一个,因为mysqli在过程接口和面向对象接口上都有支持。如果这是你喜欢的,那没关系,没问题。是的,解释得很好,我试着用这个答案,但我还是不明白。我将获取firstName和lastName的值,我应该在哪里添加它?我应该把$\u SESSION[firstName]=$firstName放在$\u SESSION['user\u info']之后@Ghost@Anthosiast因为这个$user_信息将保存那些值registerPassword、emailAddress、firstName、lastName。没有理由分配每一个。它已经是一个数组了。访问这些值以及我上面给出的示例。echo$_会话['user_info']['lastName']];//和others@Fred-ii-谢谢,伙计,很快就要去拉拉岛了,在出发前要充分利用时间:欢迎你@Ghost我自己刚从那里回来哈哈Cheers@Anthosiast是的,您可以选择其中之一,也可以选择另一个,因为mysqli在过程接口和面向对象接口上都有支持。如果这是你喜欢的,那没关系,没问题。谢谢
伙计们,我成功了,我很感激!谢谢你们,我成功了,我很感激!