【问题标题】:Why does this PHP line of code cause a syntax error on my webhosting, but not on c9?为什么这行 PHP 代码会在我的虚拟主机上导致语法错误,但在 c9 上却没有?
【发布时间】:2016-06-27 01:18:53
【问题描述】:

这是一行代码,如果没有 SESSION,则文本区域应为空白。如果有SESSION,将内容放入textarea。这里真的有错误,还是只是虚拟主机的问题?

<form id="translateform" action="processTranslation.php" method="post"><?php 
echo "<textarea maxlength='3000' id='inputField' placeholder='Enter your Lorem Ipsum text here:' name='translate'>";
if(isset($_SESSION['text'])){
    echo $_SESSION['text'];
    }
    echo "</textarea>";
        ?>

错误消息:“未捕获的语法错误:意外的标识符”。这里几乎是全部代码:

<form id="translateform" action="process.php" method="post"><?php 
if(!empty($_SESSION['text'])){
    echo "<textarea maxlength='3000' id='inputField' placeholder='Enter your Lorem Ipsum text here:' name='translate'>" . $_SESSION['text'] . "</textarea>";
    }
   else{
echo "<textarea maxlength='3000' id='inputField' placeholder='Enter your Lorem Ipsum text here:' name='translate'></textarea>";
}
        ?>
<input type="submit" name="submit" id="submit" value="Submit!">
</form>
<a href="projects.html"><div id="back"><p id="goback">Back!</p></div></a>
<script>
if(document.referrer=="msolonko.net16.net/projects.html"){
document.cookie="navigatedFromSite=agreed";
}
else if(document.referrer!="msolonko.net16.net/projects.html"&&document.referrer!="msolonko.net16.net/LoremIpsum.php"){
 document.cookie = "navigatedFromSite="no";
}
var x=document.cookie;
if(x.search("navigatedFromSite")!=-1&&x.search("agreed")!=-1){
 document.getElementById("back").style.display="initial";
}
</script>
<?php
echo "<div id='containertranslation'><p id='translation'>";
if(isset($_SESSION['translation'])){echo $_SESSION['translation'];}//if translated
else{echo "Translation: ";}//if not, empty field
echo "</p></div>";//adds div with translation

?>

如您所见,我设置了 cookie 以查看用户从哪个页面导航。如果它来自网站,应该会出现一个后退按钮。这适用于 cloud9,但不适用于此托管。这是错误消息: 这是第 109 行:

echo "<textarea maxlength='3000' id='inputField' placeholder='Enter your Lorem Ipsum text here:' name='translate'></textarea>";

这是第 119 行: else if(document.referrer!="msolonko.net16.net/projects.html"&&document.referrer!="msolonko.net16.net/LoremIpsum.php"){

【问题讨论】:

  • 错误信息是什么?
  • 还有,您的网络托管服务运行的是什么版本的 PHP?我不在我的网站上使用 PHP,所以我没有受此影响,但直到最近我的主机才从 PHP-4“升级”到 PHP-5!
  • 为什么要投反对票?您的问题是检查$_SESSION['text'] 是否为空,对吗?它与no session 相同。
  • 这不是我的反对票。错误消息是“Uncaught SyntaxError: Unexpected Identifier”。
  • @MikeRobinson 版本是 PHP-5

标签: php html forms session


【解决方案1】:

使用empty($_SESSION) 代替isset($_SESSION) 来检查$_SESSION 变量是否为空。

 // checks if the variable is empty or not
 if (!empty($_SESSION['text'])) {
     // display inside <textarea>
     echo "<textarea>" . $_SESSION['text'] . "</textarea>";
 }

【讨论】:

  • 我试过你的代码。我不明白为什么我的有什么不同,但我得到了同样的错误。奇怪的是 cloud9 在控制台中没有给我任何错误。可能我的虚拟主机不好。
  • 不,在这种情况下,您的网络主机不可能是“坏的”。他们要么运行 PHP-5,要么不运行。据我所知,您在此处发布的代码的 sn-p 中没有“语法错误”。退后一步,重新审视一下情况。你在追一条红鱼。
  • @MikeRobinson 每个程序员都需要敏锐的眼光。 竖起大拇指
猜你喜欢
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 2011-03-16
相关资源
最近更新 更多