Php 登录以获取用户名而不是电子邮件
在使用电子邮件登录后,我一直在努力获取用户名。登录后,我可以获取电子邮件的名称,但不能获取用户名 请看下面login.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>
<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在过程接口和面向对象接口上都有支持。如果这是你喜欢的,那没关系,没问题。谢谢
伙计们,我成功了,我很感激!谢谢你们,我成功了,我很感激!