![]() |
![]() ![]() |
![]() |
-Tornax- |
![]()
Post
#1
|
Goście ![]() |
Witam
W trakcie pisania skryptu natrafiłem na następujący błąd: Notice: Undefined index: image_file in c:\www\polej\index.php(134) : eval()'d code on line 123 Linia 123: Kod if (is_uploaded_file($_FILES['image_file']['tmp_name'])) Pojawia się on w trakcie przetwarzania formularza z wysłanym plikiem. Zmienna $_FILES['image_file'] jest nieutworzona, sprawdzałem przez isset(). W formularzu oczywiście istnieje linijka: Kod <INPUT TYPE="file" NAME="image_file"> Jest również odpowiednio przygotowany do wysyłania plików formularz, entype poprawny Kod <FORM ACTION="index.php?w=add&mod=ra" METHOD="POST" ENTYPE="multipart/form-data"> Cały kod ma za zadanie zapisać pare rzeczy z pól tekstowych + odebrać plik (obrazek) i zminiaturyzować. Zanim ktoś poleci sprawdzanie ustawień php dodam, że rozpracowywałem w osobnym pliku php odbieranie i miniaturyzacje obrazka: Kod <form action="<?=$_SERVER["PHP_SELF"]?>" method=post enctype="multipart/form-data"> Select A File To Upload: <input type="file" name="image_file"><br> <input type="submit" name="submitter" value="Upload File"> </form> <? $max_rozmiar = 1024*1024; $prts=explode('/',$_SERVER['PHP_SELF']); $adr=$_SERVER['DOCUMENT_ROOT']; for($x=0;$x<(count($prts)-1);$x++) { $adr.=$prts[$x].'/'; } if (is_uploaded_file($_FILES['image_file']['tmp_name'])) { if ($_FILES['image_file']['size'] > $max_rozmiar) { echo 'Bł±d! Plik jest za duży!'; } else { $dir=''; //Musi zawierać '/' na końcu $path=$adr.$dir.$_FILES['image_file']['name']; echo 'Odebrano plik. Pocz±tkowa nazwa: '.$_FILES['image_file']['name']; echo '<br/>'; if (isset($_FILES['image_file']['type'])) echo 'Typ: '.$_FILES['image_file']['type'].'<br/>'; move_uploaded_file($_FILES['image_file']['tmp_name'],$path); $im_file_name=$path; $image_attribs=getimagesize($im_file_name); $im_old=imageCreateFromJpeg($im_file_name); $th_max_width = 144; $th_max_height = 144; $ratio = ($image_attribs[0] > $image_attribs[1]) ? $th_max_width/$image_attribs[0] : $th_max_height/$image_attribs[1]; $th_width = $image_attribs[0] * $ratio; $th_height = $image_attribs[1] * $ratio; $im_new = imagecreatetruecolor($th_width,$th_height); imageAntiAlias($im_new,true); $th_file_name=$path; imageCopyResampled($im_new,$im_old,0,0,0,0,$th_width,$th_height, $image_attribs[0], $image_attribs[1]); imageJpeg($im_new,$th_file_name,80); } } else { echo 'Bł±d przy przesyłaniu danych!'; } ?> O dziwo na tym samym serwerze ten kod działa w osobnym pliku, natomiast w pliku do którego go skopiowałem już nie. Nie za bardzo potrafię zrozumieć w czym jest problem, zastanawiam się czy nie leży on w wysłanych wcześniej nagłówkach. Jeżeli ktoś mógłby podzielić się jakimś sugestiami to byłbym bardzo wdzięczny. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
MAsz takiego NOTICE, gdyż przy pierwszym uruchomieniu skyptu (jeszcze przed wyslanie formualrza) ten skrypt jest wykonywany. No a przed wyslanie formualrza ta zmienna nie istnieje. Zapewne gdy wysylasz formualrz z plikiem to już tego problemu nie ma.
Daj se chociażby warunek:
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
-tornax- |
![]()
Post
#3
|
Goście ![]() |
Nie. Ponieważ kod jest podzielony na części switch'em. Fromularz uruchamia się gdy $_GET['mod']='r' natomiast po wysłaniu (submit) zmienia $_GET['mod']='ra'. Mialbyś rację gdbym wchodził do części przetwarzającej formularz ręcznie ale zawsze wchodze do niej po przez wysłanie formularza.
Pozatym napisałem wcześniej, że po wysłaniu formularza zmienna $_FILES['image_file'] nie istnieje co sprawdzałem warunkiem z isset() tak więc wpowadzenie proponowanego przez Ciebie rozwiązania nic nie da. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.07.2025 - 10:42 |