注销时导致“500 - 内部服务器错误”的php语句

时间:2015-10-28 20:40:27

标签: javascript php

我在index.php中有这个功能......

function getCurrentUserID(){
  var currentUserID;
  if (confirmLogin()){
    currentUserID = "<?php echo htmlentities($_SESSION['user_id']); ?>";
  } else {
    currentUserID=-1;
  }
  return currentUserID;
}

当我登录时,它运行良好并返回user_id。第二个我注销(刷新index.php)我点击了“500 - 内部服务器错误”,我只能通过从函数中删除php行来解决(如果我甚至使用javascripts评论//表示法我仍然看到500错误)。一旦我删除了该行,我就可以刷新页面,重新登录,如果我想再次添加php参考功能!

有没有人知道如何永久解决这个问题?我不知道为什么php脚本有问题,因为它在“confirmLogin()”检查中(更不用说它有时完全注释掉了!)感觉我可能把它放在错误的地方但是我真的不喜欢不知道正确的地方是什么!谢谢你的任何想法。

1 个答案:

答案 0 :(得分:3)

PHP代码正在服务器端进行解析,所以在任何JS生效之前,这就是为什么如果你的行在JS函数内部并不重要。

导致您的问题的原因是您尝试访问不存在的键下的数组元素。在PHP中它是非法的。最快的解决方法是检查,如果在回显之前设置了值:<?php isset($_SESSION['user_id']) ? echo $_SESSION['user_id' : echo '-1'; ?>

这将解决您的问题,但总的来说,我会尽量避免混合使用这样的编程语言。