Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.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 登录后重定向到配置文件(PDO)_Php_Pdo - Fatal编程技术网

Php 登录后重定向到配置文件(PDO)

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

我试图将用户重定向到他们的个人资料,标题中有他们的用户名。但是,重定向不显示用户名。登录页面要求输入电子邮件和密码(用户名省略)。有人能告诉我我做错了什么吗

在class.php中:

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; ?>