[英]How to call javascript function from form in a php echo?
波紋管代碼的作用是確保不允許用戶提交評論,除非他使用 $_SESSION['login_user'] 超變量登錄。 但它給了我一個錯誤。 我認為問題是因為我在 onsumbit="return(checkUser())" 中調用了一個 javascript 函數。 那里有問題,但我不知道為什么。
我有以下代碼:
<script type="text/javascript">
// notice the quotes around the ?php tag
function checkUser() {
<?php
if(isset($_SESSION['login_user'])){
$isExist = true;
}
?>
else{
$isExist= false;
alert( "Please register first!" );
}
var htmlString="<?php echo $isExist; ?>";
return isExist;
}
</script>
...
...
<?php
echo "<form method='POST' onsubmit="return(checkUser());" action='".setComments($connection, $res['post_id'])."'>
//echo "<form method='POST' action='".setComments($connection, $res['post_id'])."'>
<input type='hidden' name='uid' value='".$_SESSION['login_user']."'>
<input type='hidden' name='date' value='".date('Y-m-d H:i:s')."'>
<textarea name='message'> </textarea><br>
<button type='submit' name='commentSubmit'>Comment</button>
</form>";
getComments($connection, $res['post_id']);
?>
....
如果這不是阻止用戶提交評論的正確方法,那么還有什么方法呢?
除了@RonaldT 所說的,您還需要了解 PHP 代碼在發送到瀏覽器之前是在服務器上執行的。 所以在 Javascript 函數中檢查$_SESSION['login_user']
有點傻,因為在用戶刷新頁面之前它總是相同的(只有這樣 PHP 才會重新檢查該值)。
所以你的功能可以像這樣簡化:
<script type="text/javascript">
// on page load, define a global variable using PHP
var isLoggedIn = <?php echo isset($_SESSION['login_user']) ? "true" : "false"; ?>;
function checkUser() {
// check that global variable every time checkUser() is called in Javascript
if (!isLoggedIn) {
alert( "Please register first!" );
}
return isLoggedIn;
}
</script>
請記住,這種“安全性”非常容易被愚弄(任何用戶都可以打開他們的瀏覽器控制台,鍵入isLoggedIn = true;
瞧),所以一定要在提交表單時檢查服務器。
或者更好:如果不允許用戶做某事,則不要給他們機會。 如果無論如何都不允許用戶提交表單,為什么還要顯示表單呢?
<?php
if (!isset($_SESSION['login_user'])) {
echo "Please register to add a comment";
} else {
echo "<form [...everything else...] /form>";
}
getComments($connection, $res['post_id']);
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.