2014-01-15 4 views
-1

Я застрял, пытаясь создать код входа с PHP и MySQL. Когда я нажимаю кнопку входа в систему, даже если имя пользователя и пароль верны, она не переходит на следующую страницу: она просто обновляет страницу login.php. Я не уверен, в чем проблема в моем коде.Почему этот login.php не работает?

Этот же код работает на локальном сервере, но в Интернете это не так.

 <?php 
session_start(); 
include './db_connect.php'; 

$error = " " ; 
if(isset($_POST['submit'])){ 
    $username = $_POST['username']; 
    $password =md5($_POST['password']); 
    if((!isset($username)) || ($username=="") || (!$username == " ") || (!isset($password)) || ($password=="") || (!$password == " ")){ 
    $error = "Please enter the details"; 
    } 
    else{ 
     $username = $_POST['username']; 
     $password =md5($_POST['password']); 

     $query = mysql_query("SELECT * FROM admin WHERE admin_name = '".$username."' and password = '".$password."'"); 

       $row = mysql_fetch_array($query); 
       $username_db = $row['admin_name']; 
       $password_db = $row['password']; 



       if(($username == $username_db) && ($password ==$password_db)) 
            { 
            header ("Location:admin_hotel_details.php"); 
             $_SESSION['username']=$username_db; 

        } 

        else{ 

         $error = "Username and password do not match"; 

         } 

     } 
    } 

    ?> 

Это admin.php (мой код формы)

<form name="" action="admin.php" method="post"> 
     <style type="text/css"> 
     label{width:130px;} 
     </style> 
     <table cellpadding="4" style="margin-left:10px;"> 
       <tr> 
     <td colspan="2"><span style="color:#F00;"> 
     <?php 
     if(isset($_GET['msg'])){ 
     $msg = $_GET['msg']; 
     $error = "Successfully logged out"; 
     } 
     if(isset($error)){echo $error;} 
     ?> 
     </span></td> 
     </tr> 



     <tr> 
     <td style="width:150px;"><label for="username">Username: <span style="color:#F00;">*</span>:</label></td> 
     <td style="width:100px;"> 
     <input type="username" name="username" id="username" onkeyup="javascript:this.value=this.value.toUpperCase();" style="width:205px" /> 
     </td> 
     </tr> 


     <tr> 
     <td style="width:100px;"><label for="password">Password:<span style="color:#F00;">*</span>:</label></td> 
     <td style="width:100px;"><input type="password" name="password" onkeyup="javascript:this.value=this.value.toUpperCase();" id="password" style="width:205px;" /></td> 
     </tr> 



     <tr> 
     <td>&nbsp;</td> 
     </tr> 

     <tr> 
     <td>&nbsp;</td> 
     <td style="width:100px;"> 
     <input type="submit" name="submit" id="submit" value="Login"/> 
     <input type="reset" name="reset" id="reset" value="Reset"/> 
     </td> 
     </tr> 

     </table> 
     </form> 

Я также попытался другой login.php

  <?php 

    include("./db_connect.php"); 
    session_start(); 
    $error = " " ; 
    if ($_SERVER["REQUEST_METHOD"] == "POST") { 
     // Username and password sent from form in HTML 
     $myusername = $_POST['username']; 
     $mypassword = md5($_POST['password']); 

     $sql = "SELECT * FROM admin WHERE admin_name = '".$myusername."' and password ='".$mypassword."'"; 
     $result = mysql_query($sql) or die(mysql_error($sql)); 
     $row = mysql_fetch_array($result); 

     $count = mysql_num_rows($result); 

     // If result matched $myusername and $mypassword, table row must be 1 row 
     if ($count == 1) { 

      $_SESSION['login_user'] = $myusername; 

      header("location:admin_hotel_details.php"); 
     } else { 
      $error = "Your username or password is invalid"; 
     } 
    } 
    ?> 

Это дает мне ту же самую проблему (на месте заголовка) ,

+1

Не могли бы вы высказать свой код формы. – Aidan

+0

Имейте в виду, если ECHO infront ваших назначений переменных отправляет содержимое в браузер, что приведет к сбою функции заголовка. Вы должны установить заголовки перед контентом – Marc

+0

, проверьте, генерирует ли mysql_query любую mysql-ошибку, такую ​​как $ query = mysql_query ("...") или die (mysql_error()); – aconrad

ответ

0

Здесь я попытался немного очистить свой код, основываясь на комментариях, которые я разместил. Посмотрите, работает ли это для вас.

<?php 
    session_start(); 
    include './db_connect.php'; 

    $error = " " ; 
    if(isset($_POST['submit']) && isset($_POST['username']) && isset($_POST['password'])){ 
     $username = $_POST['username']; 
     $password =md5($_POST['password']); 
     if($username=="" || $password==""){ 
      $error = "Please enter the details"; 
     }else{ 
      $result = mysql_query("SELECT * FROM admin WHERE admin_name = '".$username."' and password = '".$password."'"); 

      if(mysql_num_rows($result)>0){ 
       $_SESSION['username']=$username; 
       header("Location:admin_hotel_details.php"); 
      }else{ 
       $error = "Username and password do not match"; 
      } 
     } 
    } 
?> 
+0

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

+0

У вас есть сообщения об ошибках? Что происходит при запуске страницы? Получаете ли вы белый экран при использовании интернет-сервера? Возможно, в этом случае PHP не установлен. – Aidan

+0

@Очень просто освежающе, и просто проверьте это. Luxkarnataka.com/admin.php uname: ADMIN pswd: ADMIN – sajjan

0

Попробуйте использовать скрипт по ошибке.

 header("location: admin_hotel_details.php"); 
     exit(); 
    }else { 
     //Login failed 
      echo "<script>alert('INVALID USERNAME OR PASSWORD!'); 
       window.location='index.php'; 
       </script>"; 
Смежные вопросы