2015-12-15 29 views
0

登錄後,我的代碼沒有將我重定向到下一頁。登錄後沒有重定向到下一頁

<?php 
$con = mysqli_connect("localhost","myusername","mypassword","mydatabase"); 

include ("connection.php"); 
session_start(); 

if(isset($_POST['login'])) 
{ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

    $check = "SELECT * FROM admin WHERE username='$username' and password='$password'"; 
    $queryString = mysqli_query($db, $check) or die('ERROR:' . mysqli_error($db)); 
    if (mysqli_num_rows($queryString) > 0) 
    { 
     $admin = mysqli_fetch_assoc($queryString); 

     $_SESSION['username'] = $admin['username']; 
     session_write_close(); 
     header("location: http://mywebsite.com/home.php"); 
     die(); 
    } 
    else 
    { 
     echo '<div class="popup-position"> 
       <div id="popup-wrapper"> 
        <h3>Invalid user name or password.</h3><br/><a href="login.php">OK</a> 
       </div> 
       </div>'; 
    } 
} 

mysqli_close($con); 

這是下一個頁面登錄後的驗證:

<?php 
session_start(); 
if (!isset($_SESSION['username'])) 
{ 
    header("location: login.php"); 
    exit(); 
} 
+0

首先檢查數據庫連接'connection.php' – Gayathri

+0

你真的應該花一些時間學習如何您的格式代碼正確 - http://www.php-fig.org/ –

+2

此外,此代碼易受SQL注入攻擊。使用綁定參數而不是直接嵌入表單數據。 –

回答

0

讓我來幫你在日誌

的login.php

<html> 
<head> 
    <title>Hospital Login</title> 
    <link href="login.css" rel="stylesheet" type="text/css"> 
</head> 

<body> 
    <form name="form1" method="post" action="process_login.php">  
     <fieldset class="formDisplay">   
      <legend><strong>Member Login </strong></legend> 
      <strong>Username</strong></br></br> <input name="myusername" type="text" id="myusername"> 
      </br></br> 
      <strong>Password</strong></br></br><input name="mypassword" type="password" id="mypassword"> 
      </br></br> 
      <input type="submit" name="Submit" value="Login"> 
      </br></br> 
      <?php 
      echo $message; 
      ?> 
     </fieldset> 
    </form> 
</body> 
</html> 

的。上面的代碼實際上應該在你的登錄腳本中忘記關於字段集的東西,我只是將它用於其他東西:)

現在我們需要一個純PHP文件來處理登錄到我們系統的輸入。

process_login.php

<?php 
include('database_connection.php'); 
$myusername = mysqli_real_escape_string($DBConn, $_POST['myusername']); 
$mypassword = mysqli_real_escape_string($DBConn, $_POST['mypassword']); 
$query="SELECT * FROM $doctor_table WHERE username='$myusername' AND passwd='$mypassword'"; 
$result=mysqli_query($DBConn, $query); 
if(!$result){ 
echo "<p> 
         There was an error with the query.<br />\n" . 
         "The error was " . 
         htmlspecialchars(mysqli_error($DBConn), ENT_QUOTES) . 
         ".<br />\nThe query was '" . 
         htmlspecialchars($query, ENT_QUOTES) . 
         "'</P>\n"; 
} 
else if (!mysqli_num_rows($result)){ 
$message = "<p>Failed to Log In. Please check your username/password</p>\n"; 
include 'login.php'; 
} 
else{ 
    $count=mysqli_num_rows($result); 

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

       // Register $myusername, $mypassword and redirect to file "login_success.php" 
       session_start(); 
       $_SESSION['myusername'] = $myusername; 
       $_SESSION['mypassword'] = $mypassword; 
       header("Location: login_success.php"); 
       } 
} 
?> 

現在,當您的認證已經成功,則應顯示您的主頁。

注意,您必須「乾淨」的每一個用戶,以避免SQL注入條目(有助於從數據庫中竊取數據停止PPL)

這些全碼很好地工作,我會鼓勵你使用在代碼中,我提供的,並隨時通過獨立運轉來調整它自己使用:)

+0

嗨!我是PHP的新手。感謝您建議使用您的代碼,我在if(isset($ _ POST ['login'])){codes}中複製您的代碼,但它在我的網站中不起作用。它只是去process_login.php和屏幕是空白的。 – Setsujou

+0

在底部,你看到標題(位置)?重定向到您的主頁,然後它會工作,upvote並接受答案 –

1
try this 

/send user to index. if he is login/ 

<?php 

require_once("inc/ header.inc.php"); 

if(isset($_SESSION['id'])) 

{ header("Location: index.php"); 
exit(); } 

<div class="container"> 
    <div class="form-container"> 
     <p class="heading text-center">Login</p> 
<form action=" <?php echo $_SERVER['PHP_SELF'] ?>" method="post"> 
<div class="form-group"> 
       <input type="text" name="username" placeholder="Enter your Username" class="form-control"> 
      </div> 
      <div class="form-group"> 
       <input type="password" name="password" placeholder="Enter your Password" class="form-control"> 
      </div> 
      <input type="submit" value="Login" class="btn btn-primary" name="login"> 
     </form> 
     <?php 
      //login script 
      if(isset($_POST['login'])){ 
       $username = trim(htmlspecialchars ($_POST['username'])); 
       $password = trim(htmlspecialchars ($_POST['password'])); 

       //if username or password is empty 
       if(empty($username) || empty($password)){ 
        echo "<div class='alert alert-danger'>Fill in all the fields</div>"; 
        exit(); 
       } 

       //check username and password match the db record 
       $q = mysqli_query($con,"SELECT id FROM `user` WHERE username='$username' AND password='$password'"); 
       if(mysqli_num_rows($q) != 1){ 
        echo "<div class='alert alert-danger'>Invalid username or password</div>"; 
        exit(); 
       } 

       //fetch the if of the logged in user start the session 
       $row = mysqli_fetch_assoc($q); 
       //set the session with logged in user id 
       $_SESSION['id'] = $row['id']; 
       $_SESSION['username'] = $username; 
       header("Location: index.php"); 
       exit(); 
      } 
     ?> 
    </div> 
</div>