За последние 24 часа нас посетили 51969 программистов и 1772 робота. Сейчас ищут 872 программиста ...

Вопрос по созданию файла средствами PHP

Тема в разделе "PHP для новичков", создана пользователем Econaft, 3 июл 2016.

  1. Econaft

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

    С нами с:
    28 июн 2014
    Сообщения:
    89
    Симпатии:
    1
    Ничего не могу понять. Всю дорогу всё работало вот так:

    Код (Text):
    1. <?
    2. if ($submit)
    3. {
    4. $fp = fopen ("test.txt", "w");  
    5. echo 'Файл создан!';
    6. }
    7. ?>
    8.  
    9. <form method=POST>
    10. <center>
    11. <input type=submit name=submit value=" Отправить ">
    12. </center>
    13. </form>
    Но сейчас на хостинге файл test.txt перестал создаваться.
    Ответ хостера:
    Что нужно сделать, чтобы файл создавался и код работал?
     
  2. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Принять POST-запрос.
    Эко вы тянули с обновлением. В таком виде скрипт мог работать только на супермегастаром php.
     
    Econaft нравится это.
  3. Econaft

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

    С нами с:
    28 июн 2014
    Сообщения:
    89
    Симпатии:
    1
    Подскажите пожалуйста как?
    Это да. Давно не вникал во всякие новшества.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  5. Econaft

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

    С нами с:
    28 июн 2014
    Сообщения:
    89
    Симпатии:
    1
    Спасибо, понятно.
    Через $_POST теперь надо.

    А если в некоторых случаях мне всё же надо чтобы условие было записано через if ($name)
    Где name - это имя отправляемой переменной при отправке формы.
     
  6. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Хм. Давай сначала проясним, что понятно и как код выглядит сейчас?
     
    Econaft нравится это.
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    То сначала этой переменной $name надо присвоить $_POST["name"] или $_GET["name"]
     
    Econaft нравится это.
  8. Econaft

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

    С нами с:
    28 июн 2014
    Сообщения:
    89
    Симпатии:
    1
    Ясно, спасибо.
    --- Добавлено ---
    Примерно такая конструкция:
    Код (Text):
    1. <?
    2. if($_POST)
    3. {
    4. ?>
    5. <form method=POST>
    6. <h4>Вопрос 1</h4>
    7. <p><input name="a" value="1" type="radio">Ответ 1</p>
    8. <p><input name="a" value="2" type="radio">Ответ 2</p>
    9. <center>
    10. <input type="submit" class="bbcodes" value=" Далее... ">
    11. </center>
    12. <?
    13. }
    14. else
    15. {
    16. ?>
    17.  
    18. <?
    19. if($a)
    20. {
    21. ?>
    22. <form method=POST>
    23. <h4>Вопрос 2</h4>
    24. <p><input name="b" value="<? echo (4+$a) ?>" type="radio">Ответ 1.</p>
    25. <p><input name="b" value="<? echo (3+$a) ?>" type="radio">Ответ 2.</p>
    26. <p><input name="b" value="<? echo (2+$a) ?>" type="radio">Ответ 3.</p>
    27. <p><input name="b" value="<? echo (1+$a) ?>" type="radio">Ответ 4.</p>
    28. <center>
    29. <input type="submit" class="bbcodes" value=" Далее... ">
    30. </center>
    31. <?
    32. }
    33. else
    34. {
    35. ?>
    36.  
    37. <?
    38. if($b)
    39. {
    40. ?>
    41. <form method=POST>
    42. <h4>Вопрос 2</h4>
    43. <p><input name="с" value="<? echo (1+$a) ?>" type="radio">Ответ 1.</p>
    44. <p><input name="с" value="<? echo (2+$a) ?>" type="radio">Ответ 2.</p>
    45. <center>
    46. <input type="submit" class="bbcodes" value=" Далее... ">
    47. </center>
    48. <?
    49. }
    50. else
    51. {
    52. ?>
    53.  
    54. <form method=POST>
    55. <center>
    56. <input type=submit name=submit value=" Отправить ">
    57. </center>
    58. </form>
    59.  
    60. <form method=POST>
    61. <center>
    62. <input type=submit name=submit value=" Отправить ">
    63. </center>
    64. </form>
    65.  
    66. <?
    67. }}
    68. ?>
     
  9. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    @Econaft, нет, ты недопонял. Тебе надо было всего лишь добавить одну строку.
    У тебя раньше была переменная $submit. Раньше в неё данные из массива POST записывались автоматически (вот такой наркоманский PHP раньше был).
    Теперь тебе в самом начале надо вручную присвоить этой переменной значение из массива POST. Всего одну строчку. И всё.
     
  10. Econaft

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

    С нами с:
    28 июн 2014
    Сообщения:
    89
    Симпатии:
    1
    Вот так?
    Код (Text):
    1. <?
    2. if ($_POST["submit"] )
    3. {
    4. $fp = fopen ("test.txt", "w");  
    5. echo 'Файл создан!';
    6. }
    7. ?>
    8.  
    9. <form method=POST>
    10. <center>
    11. <input type=submit name=submit value=" Отправить ">
    12. </center>
    13. </form>
     
  11. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Можно и так.
    Правда, я подразумевал это:
    PHP:
    1. <?
    2. $submit = $_POST['submit'];
    3. if ($submit)
    4. {
    5. $fp = fopen ("test.txt", "w");
    6. echo 'Файл создан!';
    7. }
    8. ?>
    9. <form method=POST>
    10. <center>
    11. <input type=submit name=submit value=" Отправить ">
    12. </center>
    13. </form>
     
  12. Econaft

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

    С нами с:
    28 июн 2014
    Сообщения:
    89
    Симпатии:
    1
    Спасибо!
     
  13. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Econaft и mr.akv нравится это.
  14. Econaft

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

    С нами с:
    28 июн 2014
    Сообщения:
    89
    Симпатии:
    1
    Не могу теперь понять как передавать загружаемый файл. Это тоже не работает в новом PHP.
    Вот допустим как пример есть форма:

    Код (Text):
    1. <input type=file name=filename>
    2.  
    3. Потом идёт обработка типа такой:
    4. $img = $_FILES['filename']['name'];
    5. $uploadfile = "blog/img/$img";
    ......
    и т.д.

    И как мне сюда всунуть это: "$_POST"?
    E]
     
  15. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
  16. Econaft

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

    С нами с:
    28 июн 2014
    Сообщения:
    89
    Симпатии:
    1
    @mkramer
    у меня вроде так и сделано, и всё работало до недавнего времени, пока на новый PHP хост неперевёлся.
     
  17. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Значит не так сделано. Отлаживайте. Телепаты улетели в Турцию
     
  18. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @Econaft покажи последний код, который уже с изменениями. Ещё ты пробовал на новом хостинге сделать простую страничку из документации, чтобы проверить загрузку файла?
     
  19. Econaft

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

    С нами с:
    28 июн 2014
    Сообщения:
    89
    Симпатии:
    1
    @denis01

    вот такой код. Всё работало. Пока с этим POST не намудрили по новому.

    Код (Text):
    1. Выберите файл: <input type=file name=filename><br>
    2. <center>
    3. <br><input type=submit name=submit value=" Отправить ">
    4.  
    5.  
    6. //////////////////////////картинка
    7. function createphoto ($input,$output) {
    8. $h = 750;
    9. $q = 80;
    10. $f=$input;
    11. $src = imagecreatefromjpeg($f);
    12. $w_src = imagesx($src);
    13. $h_src= imagesy($src);
    14. $ratio = $h_src/$h;
    15.  
    16. if( $ratio<1 ) $ratio=1;
    17.  
    18. $w_dest = round($w_src/$ratio);
    19. $h_dest = round($h_src/$ratio);
    20.  
    21. $dest = imagecreatetruecolor($w_dest,$h_dest);
    22. imagecopyresized($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);
    23.  
    24. imagejpeg($dest,$output,$q);
    25. imagedestroy($dest);
    26. imagedestroy($src);
    27. }
    28. ////////////////////////
    29.  
    30. //////////////////////////картинка//////////////
    31.     $img = $_FILES['filename']['name'];
    32.     $uploadfile = "blog/img/$img";
    33.  
    34. $tip = $_FILES['filename']['type'];
    35. $tip = str_replace("blog/image/","",$tip);
    36.  
    37. if ($tip=="jpeg")
    38. {
    39.     createphoto($_FILES['filename']['tmp_name'], $uploadfile);
    40.     echo "Изображение загружено - $uploadfile";
    41.     $img = "<center><img src=\"$uploadfile\"></center>";
    42.  
    43. }
    44.     else {
    45.     $img = "";
    46. }
    47. ////////////////////////////////
     
  20. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Выглядит нормально. Надо читать логи и трассировать (выполнять по шагам, расставляя die и var_export)
    --- Добавлено ---
    Хотя... В $_FILES['filename']['type'] должно быть 'image/jpeg', а не просто jpeg. Ну это из того, что в глаза бросилось
     
    Econaft нравится это.
  21. Econaft

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

    С нами с:
    28 июн 2014
    Сообщения:
    89
    Симпатии:
    1
    @mkramer
    спасибо, похоже в новом PHP это теперь имеет значение