2013-11-26 4 views
0

저는 PHP에 매우 익숙하며 다중 이미지 업로드 양식을하려고합니다 (프로세스를 반복 중입니다). 어떤 이유로이 경고 (경고 : end() 매개 변수 1 배열, 문자열 31 줄에 주어진 기대하고있다) 어떤이 줄이 ($temp = ($_FILES["file"]["name"][$i]);)경고 : end()는 배열 1, 문자열 31에 주어진 문자열을 기대합니다.

내게 어떤 도움을주십시오. 또한 이미지 파일이 올바른 형식인지 확인한 후 업로드하기 전에 한 번 반복하여 올바른 형식인지 확인한 다음 업로드를 위해 다시 반복합니다. 시. SQL 주입 문제를 무시하고 추후에 추가 할 것입니다. 감사합니다 PHP는

<?php 
ini_set('display_errors', 1); error_reporting(E_ALL); 

ob_start(); 
session_start(); 
include 'connect.php'; 



if ($_POST) 
{ 
//get form data 



$Listingname = addslashes(strip_tags($_POST['Listingname'])); 
$Location = addslashes(strip_tags($_POST['Location'])); 
$nobed = addslashes(strip_tags($_POST['nobed'])); 
$zip = addslashes(strip_tags($_POST['zip'])); 
$price = ($_POST['price']); 
$username=($_POST[$_SESSION['username']]); 

if (!$Listingname||!$nobed||!$nobed||!$zip||!$price) 
    echo "Please fill out all fields"; 
    else 

    {$allowedExts = array("gif", "jpeg", "jpg", "png"); 
    $temp = $_FILES["file"]["name"]; 
    for($i=0;$i<count($temp);$i++) 
$temp = ($_FILES["file"]["name"][$i]); 
$extension = end($temp); 
if ((($_FILES["file"]["type"][$i] == "image/gif") 
|| ($_FILES["file"]["type"][$i] == "image/jpeg") 
|| ($_FILES["file"]["type"][$i] == "image/jpg") 
|| ($_FILES["file"]["type"][$i] == "image/pjpeg") 
|| ($_FILES["file"]["type"][$i] == "image/x-png") 
|| ($_FILES["file"]["type"][$i] == "image/png")) 
&& ($_FILES["file"]["size"][$i] < 400000) 
&& in_array($extension, $allowedExts)) 
    { 
    if ($_FILES["file"]["error"][$i] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"][$i] . "<br>"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"][$i] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"][$i] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"][$i]/1024) . " kB<br>"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"][$i] . "<br>"; 

    if (file_exists("upload/" . $_FILES["file"]["name"][$i])) 
     { 
     echo $_FILES["file"]["name"][$i] . " already exists please add another file, or change the. "; 
     } 
    else 

     { 
     $photo=$_FILES["file"]["name"][$i]; 
     move_uploaded_file($_FILES["file"]["tmp_name"][$i], 
     "upload/$photo"); 
     echo "Stored in: " . "upload/" . $_FILES["file"]["name"][$i]; 
     } 
    } 
    } 

else 

{ 
    echo "Invalid file" and die("Can not load picture"); 
    } 



    { 
     $username=$_SESSION['username']; 

      //register into database 
      mysqli_query($con,"INSERT INTO Listing (username,Listingname,Location,nobed,zip,price,pic1) VALUES 
       ('$username','$Listingname','$Location','$nobed','$zip','$price','$photo');") or die(mysqli_error()); 


      echo "Listing Added"; 

    } 
     } 

    } 



else 
{ 

?> 

<form action="Submitlisting5.php" method="post" 
enctype="multipart/form-data"> 
Listing Name:<br /> 
<input type='text' name='Listingname'><p /> 
Location:<br /> 
<input type='text' name='Location'><p /> 
Number of Beds:<br /> 
<input type='test' name='nobed'><p /> 
Zip:<br /> 
<input type='text' name='zip'><p /> 
Price:<br /> 
<input type='text' name='price'><p /> 


<label for="file">Pic1(File must be exceed 4mb):</label> 
<input type="file" name="file[]" id="file[]"><br> 
<label for="file">Pic2(File must be exceed 4mb):</label> 
<input type="file" name="file[]" id="file[]"><br> 
<br> 
<input type='submit' name='submit' value='Submit'> 
</form> 

<?php 

} 



?> 

그냥이 시도하지만, 지금은 사진을

{$allowedExts = array("gif", "jpeg", "jpg", "png"); 

    for($i=0;$i<4;$i++){ 
$temp = ($_FILES["file"]["name"]); 
$extension = $temp; 
if ((($_FILES["file"]["type"][$i] == "image/gif") 
|| ($_FILES["file"]["type"][$i] == "image/jpeg") 
|| ($_FILES["file"]["type"][$i] == "image/jpg") 
|| ($_FILES["file"]["type"][$i] == "image/pjpeg") 
|| ($_FILES["file"]["type"][$i] == "image/x-png") 
|| ($_FILES["file"]["type"][$i] == "image/png")) 
&& ($_FILES["file"]["size"][$i] < 400000) 
&& in_array($extension, $allowedExts)) 

세 번째 시험

문제는 당신이 당신의 변수를 덮어 쓰는됩니다
for($i=0;$i<4;$i++){ 


if ((($_FILES["file"]["type"][$i] == "image/gif") 
|| ($_FILES["file"]["type"][$i] == "image/jpeg") 
|| ($_FILES["file"]["type"][$i] == "image/jpg") 
|| ($_FILES["file"]["type"][$i] == "image/pjpeg") 
|| ($_FILES["file"]["type"][$i] == "image/x-png") 
|| ($_FILES["file"]["type"][$i] == "image/png")) 
    && ($_FILES["file"]["size"][$i] < 400000)) 
+0

'$ _FILES [ "file"] [ "name"] [$ i]'무엇을 얻으실 수 있습니까? 또한,'end()'는 파일 확장자를 얻지 못한다. 배열의 마지막 요소를 검색하므로보고있는 오류가 발생합니다. – brandonscript

+0

end()를 제거하면 곧바로 오류없이 사진을 업로드 할 수 없습니다. 1 이미지 업로드와 함께 모두 잘 작동하기 때문에 내가 무엇을해야하는지 잘 모르겠습니다. – Benyaman

+0

방금 ​​시도한 내용으로 내 대답을 편집했습니다. 오류는 없지만 곧장 점프하여 사진을 업로드 할 수 없습니다. – Benyaman

답변

0

업로드 할 수 없습니다 똑바로 간다 : $를 임시 =

$temp = $_FILES["file"]["name"]; 
for($i=0;$i<count($temp);$i++) 
    $temp = ($_FILES["file"]["name"][$i]); 

이 시점에서 $ temp는 더 이상 배열이 아닙니다. 위의 마지막 줄에서 $ temp 변수의 이름을 바꿔야합니다 (그리고 그 변수를 참조하는 다른 곳에서는 ... 첫 번째 변수가 아닙니다).

+0

하지만 $ temp의 첫 번째 집합을 제거하면 알 수 있습니다 : Undefined variable : temp 경고 : end()는 매개 변수 1이 배열이 될 것으로 예상합니다. 정의되지 않은 오프셋 : 2 줄, 31,32,33,34,35,36,37 – Benyaman

+0

방금 ​​중복이 없었지만 오류가 발생하지 않았습니다. 곧바로 사진을 업로드 할 수 없습니다. – Benyaman

0

이미지 유형을 확인하면서 여러 이미지를 업로드하여 정렬 할 수 있습니다.

<?php 
ini_set('display_errors', 1); error_reporting(E_ALL); 

ob_start(); 
session_start(); 
include 'connect.php'; 



if ($_POST) 
{ 
//get form data 



$Listingname = addslashes(strip_tags($_POST['Listingname'])); 
$Location = addslashes(strip_tags($_POST['Location'])); 
$nobed = addslashes(strip_tags($_POST['nobed'])); 
$zip = addslashes(strip_tags($_POST['zip'])); 
$price = ($_POST['price']); 
$username=($_POST[$_SESSION['username']]); 

if (!$Listingname||!$nobed||!$nobed||!$zip||!$price) 
    echo "Please fill out all fields"; 
    else 



    for($i=0;$i<3;$i++){ 


if ((($_FILES["file"]["type"][$i] == "image/gif") 
|| ($_FILES["file"]["type"][$i] == "image/jpeg") 
|| ($_FILES["file"]["type"][$i] == "image/jpg") 
|| ($_FILES["file"]["type"][$i] == "image/pjpeg") 
|| ($_FILES["file"]["type"][$i] == "image/x-png") 
|| ($_FILES["file"]["type"][$i] == "image/png")) 
    && ($_FILES["file"]["size"][$i] < 400000)) 


    if ($_FILES["file"]["error"][$i] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"][$i] . "<br>"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"][$i] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"][$i] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"][$i]/1024) . " kB<br>"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"][$i] . "<br>"; 

    if (file_exists("upload/" . $_FILES["file"]["name"][$i])) 
     { 
     die($_FILES["file"]["name"][$i] . " already exists please add another file, or change the name "); 
     } 

    else 

     { 
     $photo=$_FILES["file"]["name"][$i]; 
     move_uploaded_file($_FILES["file"]["tmp_name"][$i], 
     "upload/$photo"); 
     echo "Stored in: " . "upload/" . $_FILES["file"]["name"][$i]; 
     } 
    } 


else 

{ 
    echo "Invalid file" and die("Can not load picture"); 
    } 



    { 
     $username=$_SESSION['username']; 

      //register into database 
      mysqli_query($con,"INSERT INTO Listing (username,Listingname,Location,nobed,zip,price,pic1) VALUES 
       ('$username','$Listingname','$Location','$nobed','$zip','$price','$photo');") or die(mysqli_error()); 


      echo "Listing Added"; 

    } 
     } 


} 


else 
{ 

?> 

<form action="Submitlisting5.php" method="post" 
enctype="multipart/form-data"> 
Listing Name:<br /> 
<input type='text' name='Listingname'><p /> 
Location:<br /> 
<input type='text' name='Location'><p /> 
Number of Beds:<br /> 
<input type='test' name='nobed'><p /> 
Zip:<br /> 
<input type='text' name='zip'><p /> 
Price:<br /> 
<input type='text' name='price'><p /> 


<label for="file">Pic1(File must be exceed 4mb):</label> 
<input type="file" name="file[]" id="file[]"><br> 
<label for="file">Pic2(File must be exceed 4mb):</label> 
<input type="file" name="file[]" id="file[]"><br> 
<label for="file">Pic3(File must be exceed 4mb):</label> 
<input type="file" name="file[]" id="file[]"><br> 
<br> 
<input type='submit' name='submit' value='Submit'> 
</form> 

<?php 

} 



?>