2014-05-15 206 views
0

一直在看幾個這些,並沒有找到任何運氣 - 我敢肯定這是簡單的我正在做。我有一個基本的HTML登錄頁面,它調用login.php。只有登錄的用戶才能訪問PHP登錄頁面?

HTML:

<?php 
    session_start(); 
?> 

<form action="login.php" method="POST"> 
    <div align="center">Username: 
     <input type="text" name="uname"> 
     <br><br> 
     Password: 
     <input type="password" name="pass"> 
     <br><br> 
     <input type="submit" value="login" name="submit"> 
    </div> 
</form> 

的login.php:

<?php 

require ('sql_connect.php'); 
if (isset($_POST['submit'])){ 
$username=mysql_escape_string($_POST['uname']); 
$password=mysql_escape_string($_POST['pass']); 
if (!$_POST['uname'] | !$_POST['pass']) 
{ 
echo ("<SCRIPT LANGUAGE='JavaScript'> 
     window.alert('You did not complete all of the required fields') 
     window.location.href='htmlogin.html' 
     </SCRIPT>"); 
exit(); 
    } 
$sql= mysql_query("SELECT * FROM `members` WHERE `username` = '$username' AND `password` = '$password'"); 
$row= mysql_fetch_assoc($sql); 
$url=$row['defaultpage']; 

if(mysql_num_rows($sql) > 0) 
{ 
echo ("<SCRIPT LANGUAGE='JavaScript'> 
     window.alert('Login Succesfully!') 
     window.location.href='htmllogin.html' 
     </SCRIPT>"); 
     header($url); 
exit(); 
} 
else{ 
echo ("<SCRIPT LANGUAGE='JavaScript'> 
     window.alert('Wrong username password combination.Please re-enter.') 
     window.location.href='htmllogin.html' 
     </SCRIPT>"); 
exit(); 
} 
} 
else{ 
} 
?> 

我有sucesfully連接到數據庫的形式,將讓我登錄(我曾與一個數據庫條目得到它的設置所以它重定向到一個特定的URL基於誰登錄)

我的問題是,我不希望特定的URL訪問某人沒有登錄。我已經嘗試了幾個不同的選項,使用session_start();,但顯然我要麼沒有輸入正確的信息,要麼在正確的頁面上進行。以下是我目前擁有的着陸頁面上的一個特定的用戶將在登錄後發送至:

<?php 
session_start(); 
if(!isset($_SESSION['username'])){ 
    header("Location:http://mywebsite.com/htmllogin.html") 
} 
?> 

<html> 
<head> 
</head> 
    <body> 
     <div id="div1"> 
      test 
     </div> 
    </body> 
</html> 

我的想法是,在登陸頁面,如果它不符合會話將重新引導用戶到原始的html登錄頁面。 任何幫助......謝謝!

+0

是該第二碼塊你的login.php文件?你在哪裏設置你的用戶名密鑰$ _SESSION? – WillardSolutions

+0

你的php有一個致命的錯誤。您應該在header()函數後面添加一個';'。 –

+0

你確定你設置了會話變量'username'嗎? – Gudgip

回答

0

一旦你的用戶被驗證並且應該登錄,你需要創建你的$ _SESSION變量。

<?php 
$_SESSION['username'] = $_POST['uname']; 
?> 

上面的代碼段應被放置在下一如果結構在內側的login.php:

if(mysql_num_rows($sql) > 0) 
{ 
$_SESSION['username'] = $_POST['uname']; 
echo ("<SCRIPT LANGUAGE='JavaScript'> 
     window.alert('Login Succesfully!') 
     window.location.href='htmllogin.html' 
     </SCRIPT>"); 
     header($url); 
exit(); 
} 
+0

所以這需要替換我在着陸頁上的php代碼? – Dre

+0

不,一旦你知道你的用戶登錄正確,你必須將這段代碼添加到你的login.php頁面。 – Gudgip

+0

好的 - 我已經添加了所有這些,但是無論我輸入用戶名/密碼字段,立即得到服務器500錯誤 – Dre

相關問題