php - 使用 PDO 登录后显示个人资料页面

标签 php mysql session pdo phpmyadmin

我正在使用this代码作为创建登录页面的引用,但是当我登录后重定向到主页时,我能够看到仪表板,但同时我也收到这两个错误

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

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

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

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');
        }
?>

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

P.S 当我将查询中的 :$user_check 更改为 :user_check OR usercheck 时(根据它,下一个数组语句也会更改),登录页面停止重定向到仪表板,而是定向到登录再次翻页。

最佳答案

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

$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(); 放在脚本的最顶部。

关于php - 使用 PDO 登录后显示个人资料页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26600654/

相关文章:

php - 错误消息:Array ( ) 警告:mysqli::query() 期望参数 1 为字符串、对象

php - 一个输出中的 MySQL 行

php - YouTube 列表搜索过滤器

php - 更新数据在 Php 和 MySql 中不起作用

php - 如何在单个字段中存储 <select> 标签中的多个选定值

php - 从数据库中抓取数据并转化为变量

php - Magento,以客户身份从管理员登录

php - ZF2 友好 URL + SEO

PHP session 刷新!

jsf - JSF 中的本地化,如何记住每个 session 而不是每个请求/ View 选择的区域设置