使用 PDO 登录后显示个人资料页面 [关闭]

Posted

技术标签:

【中文标题】使用 PDO 登录后显示个人资料页面 [关闭]【英文标题】:display profile page after login using PDO [closed] 【发布时间】:2014-12-23 09:42:23 【问题描述】:

我使用this 代码作为创建登录页面的参考,但是当我在登录后被重定向到主页时,我能够看到仪表板,但随之而来的是我也收到了这 2 个错误

1) 警告:PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: 参数号无效:参数未定义

2) 警告:无法修改标头信息 - 标头已发送

这些错误是由会话页面引起的。

session.php

<?php
    $dbhost     = "localhost";
    $dbname     = "abc";
    $dbuser     = "abc";
    $dbpass     = "pwd";

    $conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);

    session_start();
    $user_check=$_SESSION['login_user'];

    $result = $conn->prepare("SELECT * FROM register WHERE email = :user_check");
    $result->execute(array(":usercheck"=>$user_check));    
    $row = $result->fetch(PDO::FETCH_ASSOC);    
    $login_session =$row['email'];
    $user_id =$row['id'];
    $user_passwords = $row['password'];    
    if(!isset($login_session))
        
            $conn = null; 
            header('Location: login_form.html');
        
?>

谁能告诉我如何消除这些错误?

PS 当我在查询中将 :$user_check 更改为 :user_check 或 usercheck 时(根据它,下一个数组语句也被更改)登录页面停止重定向到仪表板,而是被定向到登录重新翻页。

【问题讨论】:

通常提供您的实际代码是一个很好的开始。不是复制粘贴。 我们需要看看真实的代码,我猜你的第一个错误是一个错字。 错误 1 ​​很可能是由于参数拼写错误,即 -&gt;prepare("SELECT FROM tbl WHERE username = :userName"); -&gt;execute(array(":username"=&gt;$_POST['username']) 而错误 2 可能是由于在设置/发送标题之前打印到页面的错误 1 ​​引起的 WHERE email= :$user_check 应该是 WHERE email= :user_check 编辑 :user_check != ":usercheck"。改变一个或另一个 @Sean 我试过这样做,但是当我这样做时,页面没有被重定向到仪表板 【参考方案1】:

正如怀疑的那样,有一个错字导致了第一个错误。

$result = $conn->prepare("SELECT * FROM register WHERE email= :$user_check");
$result->execute(array(":usercheck"=>$user_check));

应该是

$result = $conn->prepare("SELECT * FROM register WHERE email= :usercheck");
$result->execute(array(":usercheck"=>$user_check));

您的第二个错误可能是因为您没有将session_start(); 放在脚本的最顶部。

【讨论】:

关闭,但再看一遍 -> :user_check != :usercheck 啊,正确且已修复。 @EternalHour 页面没有被重定向到仪表板。我已经更新了问题,请问你可以通过它吗 您提供的代码与链接中的代码不同,您的代码不会重定向到仪表板。 @EternalHour 对不起,这是服务器问题导致代码无法正常工作,感谢您的帮助

以上是关于使用 PDO 登录后显示个人资料页面 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

django-个人博客登录及权限验证功能的实现

如何使用 Django 显示用户配置文件? [关闭]

rust怎么公开个人资料

使用 Passport 进行社交身份验证登录后如何重定向到个人资料页面? (角度,快递,护照,jwt)

django——个人博客之分页/筛选功能

如何关闭好友验证登录微信?