现在我正在尝试设置网站的本地镜像。我有这个网站的整个数据库和源代码。 该网站在服务器上运行顺畅,但当我尝试在本地访问该网站的login.php时,我得到了解析错误:语法错误,意外的'}'。 我检查了login.php的源代码,语法应该没有问题。我也试过不同版本的php,但一次又一次得到相同的语法错误。有人能帮我找到问题所在吗?
login.php中的php部分源代码:
<?php
if ($form->Value("email") != "")
?>
<script>document.getElementById('email').value = "<?php echo $form->Value("email"); ?>"</script>
<?
if ($form->Value("pass") != "")
?>
<script>document.getElementById('pass').value = "<?php echo $form->Value("pass"); ?>"</script>
<?
$fields = array("email", "pass");
for ($i=0 ; $i<count($fields) ; $i++) {
if ($form->Error($fields[$i]) != "") {
?>
<script>DisplayMsg(document.getElementById("<?php echo $fields[$i]; ?>"), "<?php echo $form->Error($fields[$i]); ?>", false);</script>
<?php
}//Parse error here: syntax error, unexpected '}'
else {
?>
<script>DisplayMsg(document.getElementById("<?php echo $fields[$i]; ?>"), "", true);</script>
<?php
}
}
?>
我正在使用XAMPP来设置我的本地环境。 我是php的新手,请告诉我是否需要发布更多信息
答案 0 :(得分:1)
将PHP代码放入html页面的方式不太可读。您可以尝试以下格式:
<?php for ($i=0 ; $i<count($fields); $i++): ?>
<?php if ($form->Error($fields[$i]) != ""): ?>
<script>DisplayMsg(document.getElementById("<?php echo $fields[$i]; ?>"), "<?php echo $form->Error($fields[$i]); ?>", false);</script>
<?php endif; ?>
<?php endfor; ?>
这也可以避免花括号出现问题。
答案 1 :(得分:1)
这可能是因为在本地测试时禁用了short_open_tag。此设置控制在解析期间其他标记中的<? ?>
是否被解释为PHP。
结果是这个块:
<?
$fields = array("email", "pass");
for ($i=0 ; $i<count($fields) ; $i++) {
if ($form->Error($fields[$i]) != "") {
?>
永远不会以PHP身份执行。
因此,在这里使用时,右大括号不会关闭:
<?php
}//Parse error here: syntax error, unexpected '}'
else {
?>
这就是为什么你在一个案例中得到解析错误而不是另一个案例的原因。
答案 2 :(得分:1)
这里的语法错误是由于if块的开始和结束花括号在不同类型的开放php标记中。例如,下面将抛出类似的语法错误:
<?php
if (TRUE) {
?>
<script> ..... </script>
<? //Short open tag, differnet from <?php in previous block
}
?>
虽然这不会引发任何语法错误:
<?php
if (TRUE) {
?>
<script> ..... </script>
<?php
}
?>