Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> "Undefined index" -> $_FILES['x']['x']
-Tornax-
post 8.08.2005, 00:01:14
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.
Go to the top of the page
+Quote Post
nospor
post 8.08.2005, 09:21:00
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:
  1. <?php
  2.  
  3. if (isset($_FILES['image_file']))
  4. {
  5. //i tu dopiero upload
  6. }
  7.  
  8. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
-tornax-
post 8.08.2005, 10:14:14
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.
Go to the top of the page
+Quote Post

Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 10:42