2014-10-28 5 views
0

Я использую код this в качестве ссылки для создания страницы входа, но когда я получаю перенаправление на домашнюю страницу после входа в систему, я могу видеть панель инструментов, но вместе с ней я также получаю эти 2 ошибкистраница профиля профиля после входа в систему с использованием PDO

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 в запросе (в соответствии с ним также изменяется новый оператор массива), страница входа в систему перестает перенаправляться на панель управления, вместо этого она направляется на страницу входа снова.

+0

Обычно поставка вашего фактического кода - отличный старт. Не копировать вставку. – Darren

+0

Нам нужно увидеть реальный код, я предполагаю, что ваша первая ошибка - опечатка. – EternalHour

+0

Ошибка 1, скорее всего, связана с параметром typo, то есть '-> prepare (" SELECT FROM tbl WHERE username =: userName "); -> execute (array (": username" => $ _ POST ['username']) 'и ошибка 2, вероятно, вызвана ошибкой 1, напечатанной на странице, до того, как заголовки установлены/отправлены – Sean

ответ

2

Как и следовало ожидать, есть опечатка, вызывающая первую ошибку.

$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(); в самом начале вашего скрипта.

+0

закрыть, но посмотрите еще раз -> ': user_check'! =': Usercheck' – Sean

+0

Ах, правильно и исправлено. – EternalHour

+0

@EternalHour страница не перенаправляясь на приборную панель. Я обновил ques plz, могу уйти через него – user3789102

Смежные вопросы