За последние 24 часа нас посетили 28454 программиста и 1815 роботов. Сейчас ищут 1183 программиста ...

Вообще не понятно почему все так в кривь и в кось..(((

Тема в разделе "PHP для новичков", создана пользователем stakanych, 16 фев 2009.

  1. stakanych

    stakanych Активный пользователь

    С нами с:
    27 янв 2009
    Сообщения:
    62
    Симпатии:
    0
    вообщем такой код - почему то в окне, где должны быть сообщение (что то вроде гостевой) пишен ряд ошибок - вот таких:
    Warning: fopen(otzivi/.txt) [function.fopen]: failed to open stream: No such file or directory in C:\server\Apache Group\Apache2\htdocs\soobshenie.php on line 15

    Warning: fclose(): supplied argument is not a valid stream resource in C:\server\Apache Group\Apache2\htdocs\soobshenie.php on line 16

    Warning: file(otzivi/.txt) [function.file]: failed to open stream: No such file or directory in C:\server\Apache Group\Apache2\htdocs\soobshenie.php on line 18

    Warning: krsort() expects parameter 1 to be array, boolean given in C:\server\Apache Group\Apache2\htdocs\soobshenie.php on line 19

    Warning: Invalid argument supplied for foreach() in C:\server\Apache Group\Apache2\htdocs\soobshenie.php on line 20

    Все это на вот такой вот скрипт
    PHP:
    1.  
    2. <html>
    3.  
    4. <head>
    5.   <title>Сообщения</title>
    6. </head>
    7.  
    8. <body>
    9. <div id="lolo3">Сдесь вы можете оценить подборку и оставить свое сообщение</div><br>
    10. <table width="50%" border="2" bordercolor="green" bgcolor="silver"><td>
    11. <?php
    12. $filen="otzivi/$ind".".txt";
    13. $chislo=10;
    14. if(!file_exists($filen))
    15. {
    16.     $open=fopen($filen, "w");
    17.     fclose($open);
    18.     }
    19.     $lolo=file($filen);
    20.     krsort($lolo);
    21.     foreach($lolo as $line2)
    22.     {
    23.         $j++;
    24.         if($j<=$chislo)
    25.         {
    26.             echo $line2."<br><br>";
    27.             }
    28.             }
    29.             echo "</td></tr></table>";
    30.  
    31.             if(isset($_POST['otziv']))
    32.             {
    33.                 $ind=$_POST['ind'];
    34.                 $filen="otzivi/$ind"."txt";
    35.                 $otzivi=$_POST['otziv'];
    36.                 $data=date('d.m.Y');
    37.                 $imja=$_POST['imja'];
    38.                 $adress=$_POST['adress'];
    39.                 $nov=fopen($filen, "a");
    40.                 $danie=strit_tags($imja)." e-mail: ".strip_tags($adress)." Добавлено: ".$data;
    41.                 fwrite($nov, "<B style=color:#000066>".$danie."</B><br>".strip_tags($otziv).chr(10));
    42.                 fclose($nov);
    43.                 echo "<a href=# onClick='history.back()'><button>Вернутся</button></a>";
    44.                 }
    45.                 else
    46.                 {
    47.                     echo "<form action=soobshenie.php methom=POST>
    48.                     Ваше имя: <input type=text name=imja><br>
    49.                     Ваш e-mail: <input type=text name=adress><br>
    50.                     Ваше сообщение <br>
    51.                     <textarea name=otzin cols=50 rows=15 wrap=virtual></textarea>
    52.                     <input type=hidden name=ind value=$ind>
    53.                     <input type=sumbit value='Добавить'>
    54.                     </form>";
    55.                     }
    56.  
    57.  
    58. ?>
    59.  
    60. </body>
    61.  
    62. </html>
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    1. ВНИМАТЕЛНО ЧИТАЙТЕ сообщения об ошибках
    2. откуда в имени файла слеш?

    $filen="otzivi/$ind"."txt";

    или $ind не передался

    о! сдается мне, что опять в 1000-ый раз дело в register_globals
     
  3. stakanych

    stakanych Активный пользователь

    С нами с:
    27 янв 2009
    Сообщения:
    62
    Симпатии:
    0
    может быть мне кто нибудь объяснить что это register_globals? а то может и действительно все из-за него... а мучаюсь, теряю свое и отнимаю у других время..

    А слеш появился из книжки - я рнр только начал изучать - по книге- там так было написано...
     
  4. stakanych

    stakanych Активный пользователь

    С нами с:
    27 янв 2009
    Сообщения:
    62
    Симпатии:
    0
    если поставить обраный слеш, или убрать его вовсе - все ошибки пропадают... но сообщения не отправилсяются...
     
  5. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    stakanych
    http://phpfaq.ru/globals
    В начало страницы - ERROR_REPORTING (E_ALL ^ E_STRICT);
    А вообще смотрите логически - $ind объявляется только в середине скрипта, а обращаетесь вы к нему в начале. Попробуйте $ind = $_POST ['ind'] поставить в начале
     
  6. alexeurodnepr

    alexeurodnepr Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    register_globals находиться в php.ini имеет два параметра вкл и выкл :) лучше, что б он был выкл, но в твоем случае нужен вкл...
     
  7. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    register_globals - это опция, которая позволяет обращаться к глобальным переменным напрямую, минуя суперглобальные массивы.
    etc.
    register_globals on >> $mode
    register_globals off >> $_GET['mode']

    Использование данной опции чрезвычайно нежелательно, так как ведет к дыре в системе безопасности. В новых версиях php эта настройка по умолчанию отключена.