За последние 24 часа нас посетили 95275 программистов и 3012 роботов. Сейчас ищут 1304 программиста ...

Помогите разобраться спроблемой не пойму где загвоздка?

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

  1. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    PHP:
    1.  <?php
    2.  
    3. if(!isset($_POST['submit']))
    4. {
    5.     exit();
    6. }
    7.  
    8.  
    9. if(isset($_POST['pass_reg']))
    10. {
    11.     $pass_reg_md=md5(md5($_POST['pass_reg']));
    12. }
    13. $array_reg=array($_POST['login_reg'],$_POST['name_reg'],$pass_reg_md,$_POST['data_reg']);
    14. $reg_data=implode("|",$array_reg);
    15.  
    16.  
    17. $file_us = "user.txt";
    18.  
    19.  
    20. if (is_writable($file_us))
    21. {
    22. if (!$handle = fopen($file_us,"ab+"))
    23.     {        
    24.          header('Refresh: 3');
    25.          die("Невозможно открыть файл ($file_us)");
    26.     }
    27.    if (fwrite($handle, $reg_data) === FALSE) {
    28.         echo "Невозможно записать в  ($file_us)";
    29.         exit;
    30.     }
    31.    echo "Ура! Записали ($reg_data) в файл ($file_us)";
    32.    
    33.     fclose($handle);
    34.  
    35. }
    36. else
    37. {
    38.     echo "Файл $file_us недоступен для записи";
    39. }
    40. ?>
    Проверка на запись проходит положительно.
    А следующее условие возращает false.
    Всю голову сломал не пойму в чем дело с файлами не работал до этого.Помогите в какую сторону рыть.
     
  2. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    у тебя дофига проверок. какая проходит положительно, а какая — фейлит? Какая ОСь?
    error_reporting(E_ALL); — включено ?
     
  3. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    TheShock
    Спасибо что так быстро откликнулся второй раз помогаешь.:)

    PHP:
    1. if (is_writable($file_us))
    эта проходит

    PHP:
    1. if (!$handle = fopen($file_us,"ab+"))
    здесь false

    ось windows что б Бил Гейтс перевернулся.))))
     
  4. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    В режиме открытия b можно не указывать
    попробуйте указать полный путь или другое имя файла.
     
  5. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    iliavlad
    пробовал и без нее т.е. "b"

    а по поводу пути и другого файла я же говорю проверка на запись проходит.
    PHP:
    1. if (is_writable($file_us))
    то бишь true

    загвоздка в
    PHP:
    1. if (!$handle = fopen($file_us,"ab+"))
    Такое ощущение что права доступа на него закрыты.
    Но насколько я знаю на локалхосте по умолчанию все права открыты.
    Еще незнаю может поможет в решении у меня IIS а не apache и окошечник 2003 сервер.
     
  6. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1.  
    2. <?php
    3. if ($handle = fopen($file_us,"ab+")) {
    4.      /*{        
    5.          header('Refresh: 3');
    6.          die("Невозможно открыть файл ($file_us)");
    7.      }*/
    8.    if (fwrite($handle, $reg_data) === FALSE) {
    9.          echo "Невозможно записать в  ($file_us)";
    10.          exit;
    11.      }
    12.    echo "Ура! Записали ($reg_data) в файл ($file_us)";
    13.      
    14.      fclose($handle);
    15.  
    16.  }
     
  7. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    Frozen
    Спасибо продвинулся на шаг.
    PHP:
    1. if (fwrite($handle, $reg_data) === FALSE)  
    Теперь здесь застрял. reg_data приходит полностью а в файл не пишет.
    Помогите знатоки весь мозг взорвал.
     
  8. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
  9. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Это выражение даст FALSE если файл успешно откроется, и TRUE, если не успешно.
     
  10. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    всем спасибо за советы но оказалось что на денвере все заработало.А на работе на IIS не работает.
    Вопрос еще следующего характера как мне после записи в файл перейти допустим в index.php
    header я так понимаю мне использовать нельзя. Помогите чем еще это выполнить можно?
     
  11. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP:
    1. <?php
    2. echo '<script>document.location("http://.../index.php");</script>';
     
  12. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    А собственно почему нельзя использовать header?
     
  13. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    Volt(220)
    При вводе header('Location: index.ru');
    появляется ошибка
    Cannot modify header information - headers already sent by
     
  14. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    [vs]
    НЕ поверите не переходит.
    Помогите схожу с ума.
     
  15. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    А где вы header пишете? После:
    PHP:
    1. <?php
    2. echo "Ура! Записали ($reg_data) в файл ($file_us)";
    3. ?>
    ?
    Попробуйте:
    PHP:
    1. <?php
    2. header('Refresh: 3; URL=http://dom.ru/index.php');
    3. echo "Ура! Записали ($reg_data) в файл ($file_us)";
    4. ?>
     
  16. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    Volt(220)
    Пробовал как вы предложили выглядит примерно так
    PHP:
    1.   <?php
    2.  
    3.  
    4. if(!isset($_POST['submit']))
    5. {
    6.     exit();
    7. }
    8.  
    9.  
    10. if(isset($_POST['pass_reg']))
    11. {
    12.     $pass_reg_md=md5(md5($_POST['pass_reg']));
    13. }
    14. $array_reg=array($_POST['login_reg'],$_POST['name_reg'],$pass_reg_md,$_POST['data_reg']);
    15. $reg_data=implode("|",$array_reg);
    16. $reg_data.="\r\n";
    17.  
    18. $file_us = "user.txt";
    19.  
    20.  
    21. if (is_writable($file_us))
    22. {
    23. if (!$handle = fopen($file_us,"ab+"))
    24.     {        
    25.          header('Refresh: 3');
    26.          die("Невозможно открыть файл ($file_us)");
    27.     }
    28.  
    29.    
    30.     if (fwrite($handle, $reg_data) === FALSE) {
    31.         echo "Невозможно записать в  ($file_us)";
    32.         exit;
    33.     }
    34.    fclose($handle);
    35.  
    36.   header('Refresh: 3; URL=http://localhost/test/index.php');
    37.  echo "Ура! Записали ($reg_data) в файл ($file_us)";
    38.  exit;
    39. }
    40. else
    41. {
    42.     echo "Файл $file_us недоступен для записи";
    43. }
    44.  
    45.  
    46. ?>
    и дает ошибку
    Warning: Cannot modify header information - headers already sent by (output started at T:\home\localhost\www\test\registr.php:8) in T:\home\localhost\www\test\registr.php on line 63
     
  17. SDR

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

    С нами с:
    22 сен 2009
    Сообщения:
    244
    Симпатии:
    0
    если уж
    Код (Text):
    1.  
    2. <script>document.location("http://.../index.php");</script>
    или
    Код (Text):
    1.  
    2. <META HTTP-EQUIV="Refresh" CONTENT="3; URL=/">
    по каким-то причинам не нравится (не пойму кстати по каким)
    то юзай ob_start
     
  18. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Ну и что находится в 8 строчке registr.php?
     
  19. Darevill

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

    С нами с:
    20 сен 2009
    Сообщения:
    50
    Симпатии:
    0
    Может добавка type="text/javascript" поможет:
    PHP:
    1.  
    2. echo '<script type="text/javascript">document.location.href="http://.../index.php"</script>';
    3.  
     
  20. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    Спасибо огромное всем.Проблема решена следующем образом.
    Был файл registr.php сначала шла читая html форма потом php, header ругался на вывод html перед ним поменял их местами и все заработало.

    Volt(220)
    Спасибо огромное отдельно что натолкнул на путь истинный.
     
  21. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    А еще вопрос как сессию к файлу прикрутить что бы писалась и удалялась на каждого пользователя.
    Простите за назойливость.