2013-12-21 5 views
3

Я новичок в PHP-коде, и здесь я хочу отобразить сообщение об ошибке в login.php, если пользователь ввел неверный идентификатор пользователя или пароль. Ниже я написал двухстраничный код. Страница login.php представляет имя пользователя и пароль на странице check.php. если имя пользователя и пароль верны, то он перенаправляется на страницу xyz.php else на страницу входа в систему.Ошибка входа в php

login.php // Логин страница

<form name="login" enctype="multipart/form-data" action="checkpage.php" method="post"> 
      <table border="0" cellpadding="0" cellspacing="0"> 
      <tr> 
       <th>Username</th> 
       <td><input type="text" name="username" value="sandeep" onfocus="this.value=''" class="login-inp" /></td> 
      </tr> 
      <tr> 
       <th>Password</th> 
       <td><input type="password" name="password" class="login-inp" /></td> 
      </tr> 
      <tr> 
       <th></th> 
       <td valign="top"><input type="checkbox" class="checkbox-size" id="login-check" /><label for="login-check">Remember me</label></td> 
      </tr> 
      <tr> 
       <th></th> 
       <td><input type="submit" class="submit-login" /></td> 
      </tr> 

      <tr><th></th><td>w want to display error message here..</td></tr> 

</table></form> 

checkpage.php // подключение страница

<?php 
    session_start(); 
    //connecting to db 
    $username=$_POST['username']; 
    $pwd=$_POST['password']; 
    $q="select *from xyz where username='$username' AND password='$pwd'"; 
    $qry=mysql_query($q); 
    if(mysql_num_rows($qry)>0) 
    { 
     $_SESSION['username']=$username; 
     echo "<script>window.open('xyz.php','_self')</script>"; 
     } 
     else{ 

      header("location:login.php"); 

      } 
?> 

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

ответ

6

Вы можете установить сообщение для сессии в вашем check.php сценарии, а затем сняты с охраной сразу после получения его на дисплей (AKA «читается один раз»):

$_SESSION['message'] = 'Your message'; 

, а затем (в login.php, где вы хотите, чтобы сообщение отображалось):

if (isset($_SESSION['message'])) 
{ 
    echo $_SESSION['message']; 
    unset($_SESSION['message']); 
} 
+0

Семантический! Сессии для флэш-сообщений. +1. Также, если вы могли бы сообщить ему, что, как только пользователь вводит правильный пароль и регистрируется, сеанс должен очистить «сообщение». – Karma

+0

Сообщение очищается сразу после его отображения. И он устанавливается только в том случае, если данные входа неверны. Так что не нужно ничего делать. Я считаю, что именно Joomla отображает сообщения для пользователей, поэтому никаких новых изобретений здесь не было сделано :) – MaGnetas

1

Дайте пробел между * и из запроса.

$q="select * from xyz where username='$username' AND password='$pwd'"; 
  1. Для сообщения об ошибке можно установить флаг как error= 1

    заголовок ("место: login.php ошибка = 1"); и login.php вы можете проверить этот флаг и отображать сообщение, как

    <?php If(isset($_GET['error']) && $_GET['error'] == 1){ ?> 
         <h3>Invalid username or password</h3>  
        <?php } ?> 
    
  2. Вы можете установить сеанс ошибки и отобразить его в login.php и отключения его после отображения.

    но не забывайте использовать session_start на обеих страницах session_start(); // на верхней части страницы

    до того кода заголовка добавить $_SESSION['error'] = "you message here"

в login.php

  <?php if(isset($_SESSION['error'])) { 
       echo $_SESSION['error']; 
      } 

      ?>