Php 登录后重定向到配置文件(PDO)
我试图将用户重定向到他们的个人资料,标题中有他们的用户名。但是,重定向不显示用户名。登录页面要求输入电子邮件和密码(用户名省略)。有人能告诉我我做错了什么吗 在class.php中:Php 登录后重定向到配置文件(PDO),php,pdo,Php,Pdo,我试图将用户重定向到他们的个人资料,标题中有他们的用户名。但是,重定向不显示用户名。登录页面要求输入电子邮件和密码(用户名省略)。有人能告诉我我做错了什么吗 在class.php中: public function register($uname,$email,$upass,$code) { try { $password = md5($upass); $stmt = $this->conn->prepare("INSERT INTO tbl_users(userNam
public function register($uname,$email,$upass,$code)
{
try
{
$password = md5($upass);
$stmt = $this->conn->prepare("INSERT INTO tbl_users(userName,userEmail,userPass,tokenCode)
VALUES(:user_name, :user_mail,
:user_pass, :active_code)");
$stmt->bindparam(":user_name",$uname);
$stmt->bindparam(":user_mail",$email);
$stmt->bindparam(":user_pass",$password);
$stmt->bindparam(":active_code",$code);
$stmt->execute();
return $stmt;
}
catch(PDOException $ex)
{
echo $ex->getMessage();
}
}
public function login($email,$upass,$uname)
{
try
{
$stmt = $this->conn->prepare("SELECT * FROM tbl_users WHERE
userEmail=:email_id AND userName=:user_name");
$stmt->execute(array(":email_id"=>$email,":user_name"=>$uname));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
if($stmt->rowCount() == 1)
{
if($userRow['userStatus']=="Y")
{
if($userRow['userPass']==md5($upass))
{
$_SESSION['userSession'] = $userRow['userID'];
$_SESSION['userName'] = $userRow['userName'];
return true;
重定向代码:
public function redirectchannel()
{
header("Location: index.php?id=$userName");
}
登录页面:
if(isset($_POST['btn-login']))
{
$email = trim($_POST['txtemail']);
$upass = trim($_POST['txtupass']);
if($user_login->login($email,$upass))
{
$user_login->redirectchannel();
}
}
<input type="email" class="reginput" placeholder="Email address" name="txtemail" required />
<input type="password" class="reginput" placeholder="Password" name="txtupass" required />
<button class="formbutton" type="submit" name="btn-login">Login</button>
虽然我不知道为什么要在查询字符串中输入用户名,因为您已经在会话中输入了用户名,但仍然:
public function redirectchannel()
{
// what is `$userName` here? It is NULL
header("Location: index.php?id=$userName");
}
因此,如果您仍然希望将username作为查询参数传递,我想您可以执行以下操作:
public function redirectchannel()
{
header("Location: index.php?id=" . $_SESSION['userName']);
exit; //always exit immediately after location headers.
}
如果我理解正确,就不需要通过URL传递用户名值。您已经在使用用户名创建会话变量:
$_SESSION['userName']
您可以在使用相同会话的任何页面中使用相同的变量。只需创建一个变量,如:
$username = $_SESSION['userName'];
现在,您可以在页面上随时调用此变量,如下所示:
User Name: <?php echo $username; ?>
用户名:
您在哪里调用重定向频道?实际显示任何内容的代码在哪里?这里缺少很多内容。在登录页面上调用重定向频道。更新了问题。使用md5
散列您的密码不安全使用password\u hash
和password\u verify
谢谢,我会更改它。
User Name: <?php echo $username; ?>