2015-07-01 5 views
0

У меня есть скрипт для управления входом пользователя и когда имя пользователя введено в поле и пароль помещается в его поле, и они соответствуют db, в который вы входите, если не получаете ошибка, полученная с помощью формы входа. однако, когда вы вводите недопустимое значение в имя пользователя (имя пользователя, которого не существует), код не продолжается, так как я могу исправить это?PHP не улавливает ошибку sql

<?php 

require("bootstrap.php"); 

$con=mysql_connect(DB_HOST,DB_USER_SEC,DB_PASS_SEC) or die("Failed to connect to MySQL: " . mysql_error()); 

$db=mysql_select_db(DB_NAME_SEC,$con) or die("Failed to connect to MySQL: " . mysql_error()); 

$query = mysql_query("SELECT * FROM username WHERE userName = '$_POST[username]'") or die(mysql_error()); 

if(!empty($_POST['username'])) 
{ 
    if(!empty($_POST['password'])) 
    { 
     $row = mysql_fetch_array($query) or die(mysql_error()); 
     if(!empty($row['userName'])) 
     { 
      if(!empty($row['userPass'])) 
      { 
       if($_POST['password'] === $row['userPass']) 
       { 
        session_start(); 
        $_SESSION['logged']  = true; 
        $_SESSION['userName']  = $row['userName']; 
        $_SESSION['fname']  = $row['fname']; 
        $_SESSION['mname']  = $row['mname']; 
        $_SESSION['lname']  = $row['lname']; 
        $_SESSION['primnum']  = $row['primnum']; 
        $_SESSION['secnum']  = $row['secnum']; 
        $_SESSION['department'] = $row['department']; 
        $_SESSION['clearance'] = $row['clearance']; 
        $_SESSION['theme']  = $row['theme']; 
        $_SESSION['animations'] = $row['animations']; 
        $_SESSION['gtag']   = $row['gtag']; 

        header("Location: /workspace/index"); 
       } 
       else 
       { 
        session_start(); 

        $_SESSION['logged']  = false; 
        $_SESSION['err']   = "0x001"; 

        header("Location: /login"); 
       } 
      } 
      else 
      { 
       session_start(); 

       $_SESSION['logged']  = false; 
       $_SESSION['err']   = "0x005"; 

       header("Location: /login"); 
      } 
     } 
     else 
     { 
      session_start(); 

      $_SESSION['logged']  = false; 
      $_SESSION['err']   = "0x002"; 

      header("Location: /login"); 
     } 
    } 
    else 
    { 
     session_start(); 

     $_SESSION['logged']  = false; 
     $_SESSION['err']   = "0x003"; 

     header("Location: /login"); 
    } 
} 
else 
{ 
    session_start(); 

    $_SESSION['logged']  = false; 
    $_SESSION['err']   = "0x004"; 

    header("Location: /login"); 
} 

?> 

и да, я знаю о Mysqli и PDO так ПОЖАЛУЙСТА НЕ Доведите, что Up.

+0

Против этого кода в вашем php, чтобы видеть ошибки 'error_reporting (E_ALL); ini_set ('display_errors', 1); ' – Shehary

+1

Почему вы пишете' session_start(); 'в каждом' else' состоянии. Почему бы вам не написать 'session_start();' в верхней части страницы один раз. – Saty

+0

мой код должен был быть очищен позже, просто нужно исправить проблему, которую я кодирую в сегментах, это уродливая черновая черновик – Jdoonan

ответ

1

эта линия делает код остановке

$row = mysql_fetch_array($query) or die(mysql_error()); 

основном mysql_fetch_array ($ запроса) возвращает ложь, если нет строки для выборки. , так что он упадет до утверждения

+0

спасибо, что не могу поверить, что я не видел эту часть – Jdoonan

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