我有一個會話['密碼']。我想獲得會話價值並使用它來驗證用戶的輸入。如何將會話值放入JavaScript中?
if(opw != $_session['password']){
errors[errors.length] = "Sorry, password does not match.";
}
這是我一直在嘗試,但是如果我輸入這個,他們不會讀會話。並忽略這種情況。我如何實際插入到Javascript的會話值?
我有一個會話['密碼']。我想獲得會話價值並使用它來驗證用戶的輸入。如何將會話值放入JavaScript中?
if(opw != $_session['password']){
errors[errors.length] = "Sorry, password does not match.";
}
這是我一直在嘗試,但是如果我輸入這個,他們不會讀會話。並忽略這種情況。我如何實際插入到Javascript的會話值?
至於其他的答案都建議,你有你的PHP會話值嵌入的JavaScript頁面時生成。但其他人已經忘記了一件重要的事情 - 您必須生成VALID javascript,否則您的整個腳本將因語法錯誤而死亡。
if (opw != <?php echo json_encode($_SESSION['password']) ?>) {
請注意對json_encode的調用 - 它不僅僅是輸出密碼字符串。你必須確保密碼變成一個有效的javascript字符串,json_encode保證。
哇這是一個即時通訊尋找。謝謝 – 3cross
你內嵌 JavaScript代碼:
var session = <?php print $_SESSION['password']; ?>;
這就是你想要的?
您需要圍繞在<?php echo ?>
中的$_SESSION
。這會導致PHP變量被打印到頁面上的Javascript中。
if(opw != <?php echo $_SESSION['password']; ?>){
但是,這是一個非常不安全的檢查密碼的方法,我建議不要使用它。如果不通過SSL傳輸,密碼將在每個頁面視圖上以純文本形式發送。此外,它很可能被網絡瀏覽器緩存,任何有權訪問計算機的人都可以讀取它。
你必須手動居然出呼應的錯誤:
// do all of your validation and add all of the errors to an array.
if($opw != $_session['password']){
$errors[] = "Sorry, password does not match.";
}
echo "<script type=\"text/javascript\">var errors = ".
json_encode($errors).";</script>";
然後,後來:
<script type="text/javascript">alert(errors)</script>
請注意,PHP是JS完全不同。 PHP是一種服務器端編碼語言,意味着它在服務器呈現請求的頁面時執行。在該頁面(其中包含一些HTML),也可以有JS。但是,JS無法以您認爲的方式連接到PHP。爲此,您可以使用Ajax或其他東西(但對於您要實現的目標而言,這太複雜了)。
你可能想是這樣的
// eg. index.php or something
...
<?php
session_start();
if ($_POST['password'] == 'somePassYouDefined') {
echo 'Authenticated';
}else if (isset($_POST['password'])) {
echo 'Couldn\'t authenticate ...';
}else {
?>
<form method='post'>
<input type='password' name='password' placeholder='Password' />
<input type='submit' />
</form>
<?php
}
?>
ASP版本:
if(opw != '<%=Session("password")%>'){
我加引號是因爲密碼通常是一個字符串。
當用戶運行此腳本,它被下載到他們的電腦將明文顯示密碼的HTML頁面,即:
if(opw != 'BOBSPASSWORD'){
所以,如果他們不知道或有密碼,他們可以查看/查找並找到它。
不要在會話中存儲密碼,只能在登錄時使用它。在服務器上驗證這一點。 – house9
在會話中存儲密碼是一個壞主意! – Drewdin
同意。我可以用js控制檯(所有主流瀏覽器都有)來獲取密碼。這需要是服務器端操作。 –