2013-04-16 102 views
1

問題是:我正在構建一個簡單的登錄php頁面,用戶應該輸入用戶名和密碼並點擊「登錄」按鈕。此按鈕將輸入的值提交給另一個處理數據庫的php頁面,並確保用戶已註冊。現在,如果他/她沒有註冊,那麼頁面會返回到登錄頁面,但在此之前,它會更改某個標籤的文本,以通知用戶輸入的用戶名或密碼錯誤。如何從另一個php頁面更改一個頁面的標籤文本?

我的問題是:第二個PHP頁面無法訪問第一個元素!

這裏是我使用到現在的代碼! 第二個PHP頁面:所謂LoginSubmit.php:

if($row = mysqli_fetch_array($result)) 
{ 
    echo "<meta http-equiv='refresh' content='0;URL=../Home.php'>"; 
} 
else 
{ 
    echo"<script type='text/javascript'>"; 
echo"parent.document.getElementById('FailureText').innerHTML = 'Yours user name or password are wrong!!';"; 
echo "</script>"; 
echo "<meta http-equiv='refresh' content='0;URL=../Login.php'>"; 
} 

,並在第一頁(稱爲login.php中),標籤在等形式定義:

<td align="center" class="LiteralProb" colspan="2" style="color:Red;"> 
    <label ID="FailureText"></label> 
</td> 

它是空的,似乎非 - 現有的標籤,但是當登錄錯誤發生時,應該在其上顯示一條消息給用戶!

任何幫助,請! :) ??

+0

你確實想看看AJAX。或者在一個腳本中處理所有內容並重新加載整個頁面。 –

回答

1

將該值存儲爲會話中的某種「快閃消息」。在LoginSubmit.php使用:

// at the top of your script 
session_start(); 

// when you know an error occurred 
$_SESSION['failure_message'] = 'Yours user name or password are wrong!!'; 

,而在另一頁使用:

// at the top of your script 
session_start(); 

// in your HTML part 
<label ID="FailureText"> 
    <?php print (isset($_SESSION['failure_message']) ? $_SESSION['failure_message'] : ''); ?> 
</label> 

// at the bottom of your script remove the value from the session again 
// to avoid that it's displayed twice 
unset($_SESSION['failure_message']); 
+0

AKA「flash messages」。 –

1

您的登錄頁面是什麼,但簡單;-)

這個怎麼樣?

if (!$validLogin) { 
    header('Location: http://www.example.com/login?err'); 
    exit; 
} 

...和:

<? if(isset($_GET['err'])){ ?> 
    <div>Invalid username/password</div> 
<? } ?> 
1

這可以在一些不同的方式來完成:

1 - 您可以使用會話變量來存儲你想PHP腳本之間共享的價值觀:

session_start(); 
$_SESSION['val1']=$value1; //set the value 

你找回它是這樣的:

//receive on the other script 
session_start(); 
$value1=$_SESSION['val1']; 

2-將用戶發送到登錄腳本時,可以使用GET(URL)傳遞變量。

header("location: first_script_url?error=some_error_message"); 

你找回這樣的登錄腳本:

$err_msg=$_GET['error']; 

3 - 你可以做使用AJAX的登錄過程,所以不是從一個腳本,將用戶重定向到其他的,你做調用第二個腳本,並根據第二個腳本的返回值告訴用戶是否有任何錯誤:

使用Jquery,如果我們傳遞用戶信息,最好使用POST,也可以更好地使用HTTPS(你應該這樣做,不管你選擇什麼方法),或者在至少使用的密碼加密一個功能(這是不是100%安全):

$.post("second_url.php", {user: username, pass: password}), 
function(data){ 
    //data contains anything second_url.php echoed. So you want to echo a 1 for example if everything went ok. 
    if(data == 1){ 
      //OK 
    }else{ 
      //Something went wrong, show the user some error. 
    } 
}); 

用戶將永遠不會離開的第一個腳本,所以你必須在你的JavaScript/jQuery的所有變量。

相關問題