За последние 24 часа нас посетили 119092 программиста и 2484 робота. Сейчас ищут 1355 программистов ...

Проблемма с copy()

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

  1. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    Привет всем!
    Вот возникла такая проблемма:
    Код (Text):
    1. Warning: copy() [function.copy]: Filename cannot be empty in D:\xampp\htdocs\order.php on line 10
    вот сам код:
    Код (Text):
    1. <?php
    2. $size_file=40960000;
    3.  
    4. if($_POST['addordersubmit']=="заказать" and !empty($_POST['namef']) and !empty($_POST['namei']) and !empty($_POST['nameo']) and !empty($_POST['mail']) and !empty($_POST['login']) and !empty($_POST['password'])){
    5.     if($_FILES["foto"]["size"]<=$size_file){
    6.     $time=time();
    7.         $newimg=md5($time).".jpg";
    8.        
    9.         if(copy($_FILES['foto']['tmp_name'],"zimg/$newimg")){
    10.         $_SESSION['addnewfoto1']=$newimg;
    11.         if(!file_exists("zimg/$newimg")){
    12.             $size = getimagesize("zimg/$newimg");
    13.             if($size[0]>$size[1]){$ts=$trumb_size_y;}else{$ts=$trumb_size_x;}
    14.             $b=imagecreatefromjpeg("zimg/$newimg");
    15.             $t=imagecreatetruecolor(($ts)*($size[0]/$size[1]),$ts);
    16.             imagecopyresized($t,$b,0,0,0,0,($ts)*($size[0]/$size[1]),$ts,$size[0],$size[1]);
    17.             if(eregi(".jpg$|.jpeg$",$newimg)) {imagejpeg($t,"zimg/t/".$newimg,$jpg_quality);}
    18.         }
    19.         }
    20.     mysql_query("insert into `users` (`site_login`,`site_pass`,`mail`,`name_f`,`name_i`,`name_o`) values ('".$_POST['login']."','".md5($_POST['password'])."','".$_POST['mail']."','".$_POST['namef']."','".$_POST['namei']."','".$_POST['nameo']."')");
    21.     mysql_query("insert into `zakaz` (user,foto) values ('".mysql_insert_id()."','".$_SESSION['addnewfoto']."')");
    22.     }
    23.     else{echo"Размер фото должне быть не больше ".normsize($size_file);}
    24. }
    25. else{
    26.     echo"<form method=post enctype='multipart/form-data'>
    27.     <input type=hidden name='MAX_FILE_SIZE' value='$size_file'>
    28.         <table width=300>
    29.         <tr><td colspan=2>Подача заказа!</td></tr>
    30.         <tr>
    31.             <td width=100>Фамилия</td>
    32.             <td width=200><input type=text name='namef'></td>
    33.         </tr>
    34.         <tr>
    35.             <td>Имя</td>
    36.             <td><input type=text name='namei'></td>
    37.         </tr>
    38.         <tr>
    39.             <td>Отчество</td>
    40.             <td><input type=text name='nameo'></td>
    41.         </tr>
    42.         <tr>
    43.             <td>E-mail</td>
    44.             <td><input type=text name='mail'></td>
    45.         </tr>
    46.         <tr>
    47.             <td>Логин</td>
    48.             <td><input type=text name='login'></td>
    49.         </tr>
    50.         <tr>
    51.             <td>Пароль</td>
    52.             <td><input type=password name='password'></td>
    53.         </tr>
    54.         <tr><td colspan=2>&nbsp;</td></tr>
    55.         <tr>
    56.             <td>Фото</td>
    57.             <td><input type=file name='foto'></td>
    58.         </tr>
    59.         <tr><td colspan=2><input type=submit name=addordersubmit value='заказать'></td></tr>
    60.         </table>
    61.     </form>";
    62. }
    63. ?>
    register_globals "off"
     
  2. Mamont

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

    С нами с:
    5 дек 2010
    Сообщения:
    183
    Симпатии:
    0
  3. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    да я понимаю что мне говорит что "Имя файла НЕ должно быть пустым", материться оно ведь на $_FILES['foto']['tmp_name']
     
  4. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    распечатай массив $_FILES и посмотри что приходит. может он вообще пустой
     
  5. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    еще раз привет!
    Я использую modrewrite, вот тчо в хтацессе:
    Код (Text):
    1. RewriteEngine on
    2. Options +FollowSymlinks
    3. RewriteRule ^.htaccess$ - [F]
    4. RewriteRule ^([^\.]+)$ main.php
    выходит что не может скопировать файл в папку которую я указываю:
    Код (Text):
    1. if(copy($_FILES['foto']['tmp_name'],"zimg/$newimg")){
    пробывал прописывать
    Код (Text):
    1. if(copy($_FILES['foto']['tmp_name'],$_SERVER['DOCUMENT_ROOT']."/zimg/$newimg")){
    Чего неправильно записано в модреврайт?
    Как это можно исправить?
    Спасибо!

    ЗЫ: если сам скрипт запустить отдельно то всё прекрасно добавляет!
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это не связано.
    два вопроса:
    что по-твоему делает мод реврайт?
    что по-твоему делает copy?
     
  7. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    Если не "науными" терминами:

    модреврайт - передает значение виртуального каталога на реальный файл
    копи - копирует загруженый временной файл в указаный каталог с указаным именем
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Rim
    ой, да ну брось. модреврайт нужен только для одного - чтобы убогие с точки зрения машины урлы переделывать в удобоваримое нечто. Никакого отношения к реальности он не имеет.
     
  9. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    ну в общем то я понимаю... просто линк такого вида смотриться как папка... вот и написал что как "виртуальный каталог"
    Но суть не в том...
    Скрипт ведь работает без модреврайта, а почему с ним не хочет?
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    если ты про main.php то просто потому что ты в него не передаешь ничего
     
  11. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    Да и я имел ввиду что к примеру имя вирт. каталога http://localhost/test передаеться на файл main.php?page=test, где он обрабатываеться как get запрос на страницу.

    НУ а какое решение проблеммы может быть, почему не работает copy?
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    попробуй так:
    RewriteRule ^([^\.]+)$ main.php [L,QSA]
     
  13. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    неа... ничего не изменилось =((
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а че ты хочешь? какой урл ты хочешь перенаправить на свой main.php?
     
  15. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    даная страница у меня так: http://127.0.0.6/order
    так разбиваю на страницы:
    Код (Text):
    1. $p=explode('/',$_SERVER['REQUEST_URI']);
    в main.php:
    Код (Text):
    1. if($p[1]=="order"){include"./porder.php";}
    ну а то что выложил сверху в прописано в porder.php
    при загрузке самой страницы http://127.0.0.6/porder.php добавляет файл в указаный мною каталог...
     
  16. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    Я так понимаю что copy материться на то что не существует каталог http://127.0.0.6/order/zimg, ну и что не может вписать в него файл...
    Но пробывал прописывать через полный путь, и через ../ , ничего не помогло!
    Чесслово не знаю чего делать дальше..
     
  17. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Filename cannot be empty

    var_dump ($_FILES) в студию
     
  18. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    Ответ:
    Код (Text):
    1. array
    2.   empty
     
  19. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Вуаля, 4 пост этой темы ))))
     
  20. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    Хорошо... почему $_FILES получаеться пустой если используеться реврайт?
    Как я писал выше при запуске самого файла данные передаються, а при инкуде его нет!

    Чего я такого сделал или не сделал что оно не работает?
     
  21. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а так?

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !=/favicon.ico
    RewriteRule ^(.*)$ main.php [L,QSA]
    </IfModule>
     
  22. Devzirom

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

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !=/favicon.ico избыточно
    является файлом, что соответствует %{REQUEST_FILENAME} !-f
     
  23. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    тоже ничего... я уже перечитал фиг знает сколько мануалов, форумов и разных сайтов... и похожей причины не нашёл вобще... =(((
     
  24. Devzirom

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

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Походу, разработчики научили php отличать нормальный код от говнокода. И это радует!
     
  25. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    ? тоисть?