2016-05-16 63 views
1

我有一個HTML登錄表單,當用戶登錄時,我想將該用戶重定向到另一個頁面並更改其上的一些DOM。此重定向是通過PHP驗證用戶和密碼的腳本。 我有這樣的:如何重定向到同一頁面,並更改DOM的

<?php 
set_time_limit(0); 
header('content-type: text/html; charset=utf-8'); 
header("access-control-allow-origin: *"); 

include 'connect.php'; 

$pass= $_POST['pass']; 

$sql = "SELECT password FROM users WHERE password ='$pass'"; 
$result = mysql_query($sql); 
$row=mysql_fetch_array($result); 

if($row[0]!='') { 

    $query = mysql_query("SELECT user FROM users WHERE password ='$pass'"); 
    $user = mysql_fetch_array($query, MYSQL_ASSOC); 

    $user=$user["user"]; 



    echo "<script>window.location = 'http://localhost/public_html/as/index.php?pass=$pass';document.getElementById('log').innerHTML = 'LOGGED WITH: $user';$('#login-form').slideUp();document.getElementById('logout').style.display='';$('#log').unbind('click');</script>"; 


} else { 
    echo "<script>document.getElementById('text').value = ''; document.getElementById('text').placeholder = 'Type a valid key';</script>"; 

} 




?> 

這僅僅是學習如何處理登錄表單,所以不介意有關安全的事情。 我的問題是在這裏:

echo "<script>window.location = 'http://localhost/public_html/as/index.php?pass=$pass';document.getElementById('log').innerHTML = 'LOGGED WITH: $user';$('#login-form').slideUp();document.getElementById('logout').style.display='';$('#log').unbind('click');</script>"; 

此代碼重定向到window.location的網頁,但不改變其他DOM在HTML頁面。

我該如何解決這個問題? 在此先感謝!

+0

JavaScript只能更改它所運行的頁面的DOM。如果您想要更改其他頁面的DOM,請在執行重定向或使用會話Cookie時傳遞URL中的相關數據。 – Chris

+0

「這只是爲了學習如何處理登錄表單,所以不要介意安全問題。」但是你需要了解安全性!如果我的密碼恰好是「OR 1 = 1; - 」你的時間不好! – Dale

+0

我的問題是:如何在登錄後重定向到同一頁面時更改某些DOM? – SLFl

回答

1

你不能使用該鏈接。你有2個解決這個問題的方法。

  1. 使用SESSION[]陣列在PHP中定義用戶和目標頁loged,請檢查您的會話數組變量被設置,回聲頁面上的JavaScript做你想做什麼。

  2. 使用查詢字符串告訴目標頁面該用戶登錄並在目標頁面中使用php,回顯您的JavaScript代碼。

我認爲你有你的問題更好的解決方案。但爲了您的要求,這是我的提議。 :)

編輯:

在你的PHP文件中使用的第一行

session_start(); 

當你的用戶名和密碼是傳球,設置會話陣列像這樣: $ _SESSION [「userName的「] = $用戶名; 和php腳本的結尾使用它是這樣的:

if(isset($_SESSION["userName"])) 
    echo "<script>....your code that you want run when user login...</script>"; 
+0

感謝您的建議@barzegari,但事情是: 主頁是[http://localhost/public_html/as/index.php],當用戶登錄時獲取[http:// localhost/public_html/as/index.php?pass = $ pass] 因此,這兩個頁面的javascript代碼是相同的,唯一改變的地方是在導航欄中:'LOGIN'消失並顯示用戶名。 這個DOM改變了作品,但是當新的頁面被完全加載時,它看起來像主頁:/ – SLFl

+0

如果我明白,你將頁面重定向到它自己?這是真的嗎? –

+0

是的,因爲我有一個圖表顯示數據取決於用戶登錄:) – SLFl

相關問題