Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Parse error - unexpected '['
 
 автор: shumnyi   (27.04.2006 в 19:03)   письмо автору
 
 

Здравствуйте!
Возможно на форуме гдето есть подобная проблема, но увы я не нашел. 8(
Браузер выдает ошибку
Parse error: syntax error, unexpected '[' in /home/mysait/public_html/mysait/enter/index.php on line 40

вот код
             39   $voz=$auth["year"];
             40   $idu=$auth["id_n"];
             41  $ps=$auth["pswrd"];

Я вот ни как и не пойму почему скобка анэкспектид...8( Подскажите пожалуйста.

   
 
 автор: cheops   (28.04.2006 в 00:20)   письмо автору
 
   для: shumnyi   (27.04.2006 в 19:03)
 

Прикрепите весь файл, если не сложно, чтобы мы могли воспроизвести ситуацию.

   
 
 автор: shumnyi   (28.04.2006 в 14:42)   письмо автору
 
   для: cheops   (28.04.2006 в 00:20)
 


<?php
//enter.php
Error_Reporting(E_ALL & ~E_NOTICE);
include 
"conf.php";
header("Content-type: text/vnd.wap.wml");
$text="<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$text.=<<<TXT
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
TXT;
// v etotfail peredaetsa $user i $pswrd

//vitaskivaem iz imeni i parola vsykyu byaku
$user=$_POST["user"];
$pswrd=$_POST["pswrd"];

$user=ereg_replace("[^a-zA-Z0-9]"""$user);
$pswrd=ereg_replace("[^a-zA-Z0-9]"""$pswrd);

if (
strlen($user)>16 or strlen($pswrd)>16)
{
     
$text.=<<<TXT
     <card title="Variable" ontimer=$return><timer value="5"/>
     <p align="left">Error wait 5 sec go to index</p>
TXT;
}
else  
//otkrivaem else1
{
       
$query="SELECT * FROM users where name='".$user."';";
       
$ath=mysql_query($query);

       
$pswrd=trim($pswrd);

       if(
$ath)
       {
               
$auth=mysql_fetch_array($ath);
              
//$voz=$auth["year"];
             // $idu=$auth["id_n"];
               
$voz=$auth["year"];
               
$idu=$auth["id_n"];
               
$ps=$auth["pswrd"];
               if(
$ps!=$pswrd)
               {
                       echo 
"<p>&#206;&#248;&#232;&#225;&#234;&#224; &#232;&#228;&#229;&#237;&#242;&#232;&#244;&#232;&#234;&#224;&#246;&#232;&#232;, &#239;&#238;&#239;&#240;&#238;&#225;&#243;&#233;&#242;&#229; &#229;&#249;&#229; &#240;&#224;&#231;.</p>";
                       
$return="index.php";

                       
$text.=<<<TXT
                       <card title="Variable" ontimer=$return><timer value="5"/>
                       <p align="left">Error wait 5 sec go to index</p>
TXT;
                       exit();
               }
               else
               {
                       
$text.=<<<TXT
                       <card title="Variable">
                       <a href="#kabinet?">Voiti 
$user</a>
TXT;

               }

         }
$text.="</card>";
$text.=<<<TXT
<card title="Kabinet" id="kabinet">
<a href="timeza.php">Raspisanie zanyatii</a> <br/>
<a href="timeev.php?v=
$voz&amp;idu=$idu">Raspisanie na vecher</a>
<br/><a href="getmsg.php?v=
$voz&amp;idu=$idu">Novie Soobsh3nij</a>
<br/><a href="sendmsg.php?v=
$voz&amp;idu=$idu">Poslat soobshenie</a>
<br/><a href="timeev.php?v=
$voz&amp;idu=$idu">Spisok Druzei</a>
</card>
TXT;
}
// zakrivaem else1



$text.="</wml>";
print 
$text;
?>

   
 
 автор: Trianon   (28.04.2006 в 15:42)   письмо автору
 
   для: shumnyi   (28.04.2006 в 14:42)
 

Вы неправильно оформляете HEREDOC - литералы.
После завершающего TXT в строке ничего стоять не должно. А Вы, видимо, подклеили к этим строкам следующие. Точку с запятой после завершающего TXT интерпретатор php еще может вынести, на остальных символах ему сносит башню напрочь. Впрочем, я бы и точку с запятой убрал на следующую строку.
Из-за нарушения лексики HEREDOC-констант плывет всё остальное.

   
 
 автор: shumnyi   (28.04.2006 в 16:10)   письмо автору
 
   для: Trianon   (28.04.2006 в 15:42)
 

пробовал: перенести запяточие на след строку, вообще его убрать...не помогает..ошибка все равно остается...
Поз покажите пример как правильно оформлять...

   
 
 автор: Trianon   (28.04.2006 в 16:16)   письмо автору
 
   для: shumnyi   (28.04.2006 в 16:10)
 

Как-то так...

<?php
//enter.php
Error_Reporting(E_ALL & ~E_NOTICE);
include 
"conf.php";
header("Content-type: text/vnd.wap.wml");
$text="<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$text.=<<<TXT
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
TXT

;
// v etotfail peredaetsa $user i $pswrd

//vitaskivaem iz imeni i parola vsykyu byaku
$user=$_POST["user"];
$pswrd=$_POST["pswrd"];

$user=ereg_replace("[^a-zA-Z0-9]"""$user);
$pswrd=ereg_replace("[^a-zA-Z0-9]"""$pswrd);

if (
strlen($user)>16 or strlen($pswrd)>16)
{
     
$text.=<<<TXT
     <card title="Variable" ontimer=$return><timer value="5"/>
     <p align="left">Error wait 5 sec go to index</p>
TXT

;
}
else  
//otkrivaem else1
{
       
$query="SELECT * FROM users where name='".$user."';";
       
$ath=mysql_query($query);

       
$pswrd=trim($pswrd);

       if(
$ath)
       {
               
$auth=mysql_fetch_array($ath);
              
//$voz=$auth["year"];
             // $idu=$auth["id_n"];
               
$voz=$auth["year"];
               
$idu=$auth["id_n"];
               
$ps=$auth["pswrd"];
               if(
$ps!=$pswrd)
               {
                       echo 
"<p>&#206;&#248;&#232;&#225;&#234;&#224; &#232;&#228;&#229;&#237;&#242;&#232;&#244;&#232;&#234;&#224;&#246;&#232;&#232;, &#239;&#238;&#239;&#240;&#238;&#225;&#243;&#233;&#242;&#229; &#229;&#249;&#229; &#240;&#224;&#231;.</p>";
                       
$return="index.php";

                       
$text.=<<<TXT
                       <card title="Variable" ontimer=$return><timer value="5"/>
                       <p align="left">Error wait 5 sec go to index</p>
TXT

;                       exit();
               }
               else
               {
                       
$text.=<<<TXT
                       <card title="Variable">
                       <a href="#kabinet?">Voiti 
$user</a>
TXT

;
               }

         }
$text.="</card>";
$text.=<<<TXT
<card title="Kabinet" id="kabinet">
<a href="timeza.php">Raspisanie zanyatii</a> <br/>
<a href="timeev.php?v=
$voz&amp;idu=$idu">Raspisanie na vecher</a>
<br/><a href="getmsg.php?v=
$voz&amp;idu=$idu">Novie Soobsh3nij</a>
<br/><a href="sendmsg.php?v=
$voz&amp;idu=$idu">Poslat soobshenie</a>
<br/><a href="timeev.php?v=
$voz&amp;idu=$idu">Spisok Druzei</a>
</card>
TXT

;
}
// zakrivaem else1



$text.="</wml>";
print 
$text;
?>

   
 
 автор: Trianon   (28.04.2006 в 16:22)   письмо автору
 
   для: Trianon   (28.04.2006 в 16:16)
 

Cheops, скажите пожалуйста, где можно почитать обо всех особенностях ввода символов сообщений в Вашем форуме? Про косые кавычки, и прочие подводные камни.
Чтобы оставить этот ответ, его пришлось четыре раза исправлять. Форум искажает текст, хоть тресни.

   
 
 автор: cheops   (28.04.2006 в 22:25)   письмо автору
 
   для: Trianon   (28.04.2006 в 16:22)
 

Лучше прикреплять код сообщения в виде файла... тем более у него достаточно большой размер, к сожалению, переправить сейчас уже кавычки нельзя, хоть и очень хочется, так как это перечеркнёт все предыдущие ответы.

   
 
 автор: shumnyi   (28.04.2006 в 16:37)   письмо автору
 
   для: Trianon   (28.04.2006 в 16:16)
 

Спасибо, помогло...первый раз наверно кэш не обновился..ошибку показывал, теперь все нормально...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования