2015-05-16 1 views
0

Теперь я пытаюсь настроить локальное зеркало веб-сайта. У меня есть целая база данных и исходный код этого сайта. Веб-сайт работает плавно на сервере, но когда я пытаюсь посетить login.php на локальном сайте, я получил ошибку синтаксического анализа: синтаксическая ошибка, неожиданная '}'. Я проверил исходный код login.php, и не должно быть никаких проблем с синтаксисом. Я также пробовал разные версии php, но получал ту же синтаксическую ошибку снова и снова. Может ли кто-нибудь помочь мне найти, где проблема?Исправить исходный код, но я получил ошибку синтаксиса: синтаксическая ошибка, неожиданная '}'

Исходный код PHP в части login.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, дайте мне знать, если мне нужно опубликовать дополнительную информацию

ответ

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 { 
     ?> 

Вот почему вы получите ошибку синтаксического анализа в одном случае, но не другой.

+0

Это работает !!! Спасибо огромное! Я работаю над этим целым днем, наконец, заработал! Спасибо!!!! – hpPlayer

+0

Нет проблем. Рад помочь. – Anonymous

+0

Nevermind, я почему-то не заметил ...: - / – Devon

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; ?> 

Это также позволит избежать проблем с фигурными фигурными скобками.

+0

Это действительно вопрос предпочтений. Это будет иметь больше смысла в качестве комментария. – Anonymous

1

Синтаксическая ошибка здесь обусловлена ​​открывающей и закрывающей фигурной скобкой, если блок находится в разных типах открывающего тега php. В приведенном ниже примере будет бросать подобную ошибку синтаксиса:

<?php 
if (TRUE) { 
?> 
    <script> ..... </script> 
<? //Short open tag, differnet from <?php in previous block 
} 
?> 

Хотя это не будет бросать какие-либо ошибки синтаксиса:

<?php 
if (TRUE) { 
?> 
    <script> ..... </script> 
<?php 
} 
?> 
Смежные вопросы