За последние 24 часа нас посетили 21543 программиста и 1018 роботов. Сейчас ищут 697 программистов ...

Новое имя загружаемого файла

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

  1. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    Есть форма для загрузки файлов. Код ниже:
    HTML:
    1.  
    2. <!DOCTYPE HTML>
    3.  
    4.  
    5.   <title>Загрузка файлов из формы</title>
    6.   <meta charset=UTF-8>
    7. </head>
    8.  
    9.       <h2><p><b> Форма для загрузки файлов </b></p></h2>
    10.       <form action="DZ12A.php" method="post" enctype="multipart/form-data">
    11.       <input type="file" name="filename"><br>
    12.       <input type="submit" value="Загрузить"><br>
    13.       </form>
    14. </body>
    15.  
    16. </html>
    17.  
    Также есть php код, обрабатывающий эту форму:
    PHP:
    1. if(is_uploaded_file($_FILES["filename"]["tmp_name"])) {
    2.  
    3. move_uploaded_file($_FILES["filename"]["tmp_name"], "D:\Марина диск E" . $_FILES["filename"]["name"]);
    4. echo 'Файл успешно загружен';
    5. }
    6.  
    7. else {
    8. echo 'При загрузке файла произошла ошибка';
    9. }

    Необходимо задать формат нового имени загружаемого файла на выбор (т. е., грубо говоря, при загрузке файла изменять его имя):
    - формат 1: текущий год-месяц-день
    - формат 2: текущий год-месяц-день часы: минуты
    - формат 3: случайное имя длиной 5 символов

    Я сделал это следующим образом.

    PHP:
    1. //формат 1, формат 2
    2. $t1 = time();
    3. $arr[0] = date('Y-m-d', $t1);
    4. $arr[1] = date('Y-m-d H:i', $t1);
    5.  
    6. //формат 3
    7. $name = null;
    8. $i = 0;
    9. $arra = array ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9','0');
    10.  
    11. While ($i != 5){
    12. $a = array_rand ($arra);
    13. $name = $name . $a;
    14. $i++;
    15. }
    16. $arr[2] = $name;
    17.  
    18. //Вот сама строчка, изменяющая имя
    19. $_FILES["filename"]["name"] = array_rand ($arr);

    Но фишка вот в чём:
    Необходимо сверстать форму с загрузкой файлов, где есть ПЕРЕКЛЮЧАТЕЛЬ, ИЗМЕНЯЮЩИЙ ИМЯ. То-есть input type = "radio". При этом формат 3: случайное имя длиной 5 символов (где цифра 5 - текстовое поле, которое можно менять). Как это сделать я вообще понятия не имею. Чисто кодом написал, но вот как сделать изменения имени через переключатели... а в особенности через текстовое поле... помогите плиз
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    у тебя как-то не в той последовательности получилось изучать стек. ты можешь что-то наваять на пхп, но совершенно не знаешь хтмл, хотя по сути результатом работы пхп в 99% случаев является именно хтмл.
    давай для начала ты просто сверстаешь какую-нибудь форму, где у тебя есть контроллер выбора файла и радиокнопки переключения формата имени. код в студию.
    --- Добавлено ---
    Ладно, с хтмл я погорячился. Но все равно давай от простого к сложному реши свою задачу.
    Уношу в "новички" ибо "профи" тут не пахнет.
    --- Добавлено ---
    Судя по регулярном DZ-число - это какие-то домашние задания. Почему ты не задашь все свои вопросы своим учителям?
     
  3. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    Форму и выбор файла можно увидеть в коде выше, а как сделать радиокнопки переключения формата имени - это и был мой основной вопрос, так что мне совершенно не понятно, как я должен это сделать. И да, насчёт "совершенно не знаешь хтмл" - это, на мой взгляд, совершенно необоснованная критика. И как можно по какой-то захудалой форме судить о знаниях html мне тоже не понятно.
     
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    Ты читать не умеешь? Я уже выше сказал, что про хтмл погорячился. И читать ты похоже не умеешь. От тебя попросили простую форму. Приходится учить тебя вместо тех ребят которые тебе домашние задания задают. Поменьше спорь.
     
  5. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    HTML:
    1.  
    2. <form method="post" name="form1" action="send.php" enctype="multipart/form-data">
    3.          
    4.      <p>Ваше имя:</p>
    5.      <p><input type="text" name="name" required></p>
    6.                
    7.      <p>Ваш емейл:</p>
    8.      <p><input type="text" name="email" required></p>
    9.                
    10.      <p>Ваш телефон:</p>
    11.      <p><input type="text" name="phone"></p>
    12.        
    13.      <p>Сообщение:</p>
    14.      <p><textarea name="text" required></textarea></p>
    15.  
    16.      <p>Доп. информация:</p>
    17.      <input type="file" name="filename"><br>
    18.      <input type="submit" value="Загрузить"><br>
    19.  
    20.    </form>
    21.  
     
    denis01 нравится это.
  6. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    Отлично. Теперь напиши "обработчик" этой формы, который выведет значения всех переданных в _POST полей.
     
  7. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    PHP:
    1. $name = $_POST['name'];
    2. echo $name;
    3. $email = $_POST['email'];
    4. echo $email;
    5. $phone = $_POST['phone'];
    6. echo $phone;
    7. $text = $_POST['text'];
    8. echo $text;
    9. $filename = $_POST['filename'];
    10. echo $filename;
    --- Добавлено ---
    PHP:
    1. $name = $_POST['name'];
    2. echo $name;
    3. $email = $_POST['email'];
    4. echo $email;
    5. $phone = $_POST['phone'];
    6. echo $phone;
    7. $text = $_POST['text'];
    8. echo $text;
    9. $filename = $_POST['filename'];
    10. echo $filename;
     
  8. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    filename-а у тебя не будет. Это ж ведь файл. Его не через _POST обрабатывать надо.
     
  9. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
  10. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    PHP:
    1. $name = $_POST['name'];
    2. echo $name;
    3. $email = $_POST['email'];
    4. echo $email;
    5. $phone = $_POST['phone'];
    6. echo $phone;
    7. $text = $_POST['text'];
    8. echo $text;
    9. $filename = $_FILES['userfile']['name'];
    10. echo $filename;
     
  11. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    @DimaP, у тебя поле типа file имеет другое имя, не userfile, поэтому и ключ в массиве другой будет. Осталось теперь посмотреть в руководстве по HTML, как делаются элементы <input> типа "переключатель"
     
  12. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    теперь объедини этот "обработчик" с самой формой, чтоб они оказались в одном файле, но "обработчик" срабатывал только когда отправлена форма.
     
  13. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    PHP:
    1. <!DOCTYPE HTML>
    2.  
    3. <html>
    4.  
    5. <head>
    6.    <meta charset=UTF-8>
    7.    <title>proba</title>
    8. </head>
    9.  
    10. <body>
    11.  
    12. <form method="post" name="form1" enctype="multipart/form-data">
    13.    
    14.   <p>Ваше имя:</p>
    15.   <p><input type="text" name="name" required></p>
    16.    
    17.   <p>Ваш емейл:</p>
    18.   <p><input type="text" name="email" required></p>
    19.    
    20.   <p>Ваш телефон:</p>
    21.   <p><input type="text" name="phone"></p>
    22.    
    23.   <p>Сообщение:</p>
    24.   <p><textarea name="text" required></textarea></p>
    25.   <p>Доп. информация:</p>
    26.   <input type="file" name="filename"><br>
    27.   <input type="submit" value="Загрузить" name="submit"><br>
    28.   </form>
    29.  
    30. <?php
    31. if (isset($_POST['submit'])) {
    32.    $name = $_POST['name'];
    33.    echo $name;
    34.    $email = $_POST['email'];
    35.    echo $email;
    36.    $phone = $_POST['phone'];
    37.    echo $phone;
    38.    $text = $_POST['text'];
    39.    echo $text;
    40.    $filename = $_FILES['filename']['name'];
    41.    echo $filename;
    42. }
    43.  
    44. ?>
    45.  
    46. </body>
    47.  
    48. </html>
    --- Добавлено ---
    [QUOTE="
    --- Добавлено ---
    Судя по регулярном DZ-число - это какие-то домашние задания. Почему ты не задашь все свои вопросы своим учителям?[/QUOTE]

    Потому что учитель находится за 3000км. от меня, а мне дана куча дз на 2 недели, причём это дз мы даже примерно на уроке не разбирали.
     
  14. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @DimaP работает? Задача решена?
     
  15. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    Лучше проверять не наличие какого-то поля в посте, а текущий метод запроса.
    Теперь добавь в фору радио-контроллер с тремя значениями, а в обработчике - вывод выбранного значения.
     
  16. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    нет
     
  17. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    Вывод выбранного значения так делать? Я знаю, что выбранное изначально - это checked, но как узнать, что именно выбрано - насчёт этого не знаю
    PHP:
    1. if ($_POST['radio']==="Вариант 1") {
    2.    echo "<b>Вариант 1</b>";
    3. }
    4. if ($_POST['radio']==="Вариант 2") {
    5. echo "<b>Вариант 2</b>";
    6. }
    7. if ($_POST['radio']==="Вариант 3") {
    8.    echo "<b>Вариант 3</b>";
    9. }]
     
  18. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
  19. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    HTML:
    1.  
    2. <!DOCTYPE HTML>
    3.  
    4.  
    5.    <meta charset=UTF-8>
    6.    <title>proba</title>
    7. </head>
    8.  
    9.  
    10. <form method="post" name="form1" enctype="multipart/form-data">
    11.    
    12.   <p>Ваше имя:</p>
    13.   <p><input type="text" name="name" required></p>
    14.    
    15.   <p>Ваш емейл:</p>
    16.   <p><input type="text" name="email" required></p>
    17.    
    18.   <p>Ваш телефон:</p>
    19.   <p><input type="text" name="phone"></p>
    20.    
    21.   <p>Сообщение:</p>
    22.   <p><textarea name="text" required></textarea></p>
    23.   <p>Доп. информация:</p>
    24.   <input type="file" name="filename"><br>
    25.   <input type="submit" value="Загрузить" name="submit"><br>
    26.    
    27.     <p>Радио-контроллер</p>
    28.     <p><input type="radio" name="radio">Вариант 1</p>
    29.     <p><input type="radio" name="radio">Вариант 2</p>
    30.     <p><input type="radio" name="radio">Вариант 3</p>
    31.    
    32.   </form>
    33.  
    34. [php]<?php
    35. if (isset($_POST['submit'])) {
    36.   $name = $_POST['name'];
    37.   echo $name;
    38.   $email = $_POST['email'];
    39.   echo $email;
    40.   $phone = $_POST['phone'];
    41.   echo $phone;
    42.   $text = $_POST['text'];
    43.   echo $text;
    44.   $filename = $_FILES['filename']['name'];
    45.   echo $filename;
    46. }
    47.  
    48.  
    49. if ($_POST['radio']==="Вариант 1") {
    50.   echo "<b>Вариант 1</b>";
    51. }
    52. if ($_POST['radio']==="Вариант 2") {
    53. echo "<b>Вариант 2</b>";
    54. }
    55. if ($_POST['radio']==="Вариант 3") {
    56.    echo "<b>Вариант 3</b>";
    57. }
    58.  
    59. ?>[/php]
    60.  
    61.  
    62.  
    63. </body>
    64.  
    65. </html>
    66.  
    --- Добавлено ---
    PHP:
    1. <!DOCTYPE HTML>
    2.  
    3. <html>
    4.  
    5. <head>
    6.    <meta charset=UTF-8>
    7.    <title>proba</title>
    8. </head>
    9.  
    10. <body>
    11.  
    12. <form method="post" name="form1" enctype="multipart/form-data">
    13.    
    14.   <p>Ваше имя:</p>
    15.   <p><input type="text" name="name" required></p>
    16.    
    17.   <p>Ваш емейл:</p>
    18.   <p><input type="text" name="email" required></p>
    19.    
    20.   <p>Ваш телефон:</p>
    21.   <p><input type="text" name="phone"></p>
    22.    
    23.   <p>Сообщение:</p>
    24.   <p><textarea name="text" required></textarea></p>
    25.   <p>Доп. информация:</p>
    26.   <input type="file" name="filename"><br>
    27.   <input type="submit" value="Загрузить" name="submit"><br>
    28.    
    29.     <p>Радио-контроллер</p>
    30.     <p><input type="radio" name="radio">Вариант 1</p>
    31.     <p><input type="radio" name="radio">Вариант 2</p>
    32.     <p><input type="radio" name="radio">Вариант 3</p>
    33.    
    34.   </form>
    35.  
    36. <?php
    37. if (isset($_POST['submit'])) {
    38.    $name = $_POST['name'];
    39.    echo $name;
    40.    $email = $_POST['email'];
    41.    echo $email;
    42.    $phone = $_POST['phone'];
    43.    echo $phone;
    44.    $text = $_POST['text'];
    45.    echo $text;
    46.    $filename = $_FILES['filename']['name'];
    47.    echo $filename;
    48. }
    49.  
    50.  
    51. if ($_POST['radio']==="Вариант 1") {
    52.    echo "<b>Вариант 1</b>";
    53. }
    54. if ($_POST['radio']==="Вариант 2") {
    55. echo "<b>Вариант 2</b>";
    56. }
    57. if ($_POST['radio']==="Вариант 3") {
    58.    echo "<b>Вариант 3</b>";
    59. }
    60.  
    61. ?>
    62.  
    63.  
    64.  
    65. </body>
    66.  
    67. </html>
     
  20. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    А почему ваши ифы вне блока, который работает только если форма отправлена?
     
  21. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    Ты не передаешь никакого значения. Тот текст, который ты пишешь рядом с инпутом - просто инлайн текст. Можно было оформить его лейблом, тогда по клике на текст будет переставляться радиокнопка. Но мы сейчас не об этом. У твоих радио нет значения. Не имеет смысла ловить что-то обработчиком.
     
  22. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    PHP:
    1. <!DOCTYPE HTML>
    2.  
    3. <html>
    4.  
    5. <head>
    6.    <meta charset=UTF-8>
    7.    <title>proba</title>
    8. </head>
    9.  
    10. <body>
    11.  
    12. <form method="post" name="form1" enctype="multipart/form-data">
    13.    
    14.   <p>Ваше имя:</p>
    15.   <p><input type="text" name="name" required></p>
    16.    
    17.   <p>Ваш емейл:</p>
    18.   <p><input type="text" name="email" required></p>
    19.    
    20.   <p>Ваш телефон:</p>
    21.   <p><input type="text" name="phone"></p>
    22.    
    23.   <p>Сообщение:</p>
    24.   <p><textarea name="text" required></textarea></p>
    25.   <p>Доп. информация:</p>
    26.   <input type="file" name="filename"><br>
    27.   <input type="submit" value="Загрузить" name="submit"><br>
    28.    
    29.     <p>Радио-контроллер</p>
    30.     <p><input type="radio" name="radio">Вариант 1</p>
    31.     <p><input type="radio" name="radio">Вариант 2</p>
    32.     <p><input type="radio" name="radio">Вариант 3</p>
    33.    
    34.   </form>
    35.  
    36. <?php
    37. if (isset($_POST['submit'])) {
    38.    $name = $_POST['name'];
    39.    echo $name;
    40.    $email = $_POST['email'];
    41.    echo $email;
    42.    $phone = $_POST['phone'];
    43.    echo $phone;
    44.    $text = $_POST['text'];
    45.    echo $text;
    46.    $filename = $_FILES['filename']['name'];
    47.    echo $filename;
    48.    
    49.    if ($_POST['radio']==="Вариант 1") {
    50.      echo "<b>Вариант 1</b>";
    51. }
    52.    if ($_POST['radio']==="Вариант 2") {
    53.      echo "<b>Вариант 2</b>";
    54. }
    55.    if ($_POST['radio']==="Вариант 3") {
    56.      echo "<b>Вариант 3</b>";
    57. }
    58. }
    59.  
    60. ?>
    61.  
    62.  
    63.  
    64. </body>
    65.  
    66. </html>
     
  23. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    О, я уже не соображаю. Даже не заметил, что value нету...
     
  24. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    PHP:
    1. <!DOCTYPE HTML>
    2.  
    3. <html>
    4.  
    5. <head>
    6.    <meta charset=UTF-8>
    7.    <title>proba</title>
    8. </head>
    9.  
    10. <body>
    11.  
    12. <form method="post" name="form1" enctype="multipart/form-data">
    13.    
    14.   <p>Ваше имя:</p>
    15.   <p><input type="text" name="name" required></p>
    16.    
    17.   <p>Ваш емейл:</p>
    18.   <p><input type="text" name="email" required></p>
    19.    
    20.   <p>Ваш телефон:</p>
    21.   <p><input type="text" name="phone"></p>
    22.    
    23.   <p>Сообщение:</p>
    24.   <p><textarea name="text" required></textarea></p>
    25.   <p>Доп. информация:</p>
    26.   <input type="file" name="filename"><br>
    27.   <input type="submit" value="Загрузить" name="submit"><br>
    28.    
    29.     <p>Радио-контроллер</p>
    30.     <p><input type="radio" name="radio" value="Вариант 1">Вариант 1</p>
    31.     <p><input type="radio" name="radio" value="Вариант 2">Вариант 2</p>
    32.     <p><input type="radio" name="radio" value="Вариант 3">Вариант 3</p>
    33.    
    34.   </form>
    35.  
    36. <?php
    37. if (isset($_POST['submit'])) {
    38.    $name = $_POST['name'];
    39.    echo $name;
    40.    $email = $_POST['email'];
    41.    echo $email;
    42.    $phone = $_POST['phone'];
    43.    echo $phone;
    44.    $text = $_POST['text'];
    45.    echo $text;
    46.    $filename = $_FILES['filename']['name'];
    47.    echo $filename;
    48.    
    49.    if ($_POST['radio']==="Вариант 1") {
    50.      echo "<b>Вариант 1</b>";
    51. }
    52.    if ($_POST['radio']==="Вариант 2") {
    53.      echo "<b>Вариант 2</b>";
    54. }
    55.    if ($_POST['radio']==="Вариант 3") {
    56.      echo "<b>Вариант 3</b>";
    57. }
    58. }
    59.  
    60. ?>
    61.  
    62.  
    63.  
    64. </body>
    65.  
    66. </html>
     
  25. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    Не хочешь какой-нибудь из вариантов сделать активным по умолчанию?
    И примени дельный совет господина @mkramer относительно switch.