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!';
}
?>
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.