2013-06-24 5 views
-2

У меня возникают некоторые ошибки при попытке загрузить файл в каталог. Эти ошибки:Примечание: Неопределенный индекс: sPic (Пытается загрузить картинку)

Notice: Undefined index: sPic in C:\wamp\www\uniqueminecraftservers\upload\upload.php on line 8 
Notice: Undefined index: sPic in C:\wamp\www\uniqueminecraftservers\upload\upload.php on line 13 
Notice: Undefined index: sPic in C:\wamp\www\uniqueminecraftservers\upload\upload.php on line 23 

Вот мой PHP:

<?php 
    $name = htmlspecialchars($_POST['sName']); 
    $ip = htmlspecialchars($_POST['sIp']); 
    $type = $_POST['sType']; 
    $port = htmlspecialchars($_POST['sPort']); 
    $website = htmlspecialchars($_POST['sWeb']); 
    $video = htmlspecialchars($_POST['sVideo']); 
    $pic = ($_FILES['sPic']['name']); // line 8 
    $desc = htmlspecialchars($_POST['sDesc']); 


    $target = "/uniqueminecraftservers/slist/banners/"; 
    $target = $target . basename($_FILES['sPic']['name']); // line 13 

// Connects to your Database 
mysql_connect("localhost", "root", "") or die(mysql_error()) ; 
mysql_select_db("slist") or die(mysql_error()) ; 

//Writes the information to the database 
mysql_query("INSERT INTO `postdata` VALUES ('$name', '$ip', '$port', '$type', '$website', '$video', '$desc')") ; 

//Writes the photo to the server 
if(move_uploaded_file($_FILES['sPic']['tmp_name'], $target)) // line 23 
{ 

//Tells you if its all ok 
echo "The file ". basename($_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 
?> 

Я попытался Evrything я могу найти на сайте при поиске в течение последних 2-х часов. Я НЕ МОГУТ РИСКИРОВАТЬ, КАК ИСПОЛЬЗОВАТЬ ЭТО.

Примечание: Запуск на WAMP с PHP 5.4.3

+1

Вы можете редактировать в форме загрузки? – Barmar

+0

[Пожалуйста, не используйте 'mysql_ *' функции] (http://stackoverflow.com/q/12859942/1190388) в новом коде. Они больше не поддерживаются и [официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. Красную рамку? Узнайте о подготовленных инструкциях и используйте [tag: PDO] или [tag: MySQLi]. – hjpotter92

+0

Что означает '$ _FILES ['sPic'] ['error']' say? Откуда: $ _FILES ['uploadedfile'] ['name'] '? Почему вы не делаете никаких проверок? И 'htmlspecialchars' не следует использовать на входных данных, только при отображении данных обратно –

ответ

0

Перед тем этот вопрос закрывается, возможно, есть вдумается через это, может быть какой-то интерес.

<?php 
try{ 
    //connect to the database using PDO 
    $db = new PDO("mysql:host=localhost;dbname=slist","root", "mysql_password"); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC); 
    //if there is an error catch it here 
} catch(PDOException $e) { 
    //display the Exception 
    exit($e->getMessage()); 
} 

//Setup vars we going to use 
$insert = array(); 
$message= null; 
$error = array(); 
$target = "/uniqueminecraftservers/slist/banners/"; 

//ok is request POST? 
if($_SERVER['REQUEST_METHOD'] === 'POST'){ 

    /* Quick crude validation */ 
    //Allowed keys we are expecting from POST 
    $keys = array('sName','sIp','sType','sPort','sWeb','sVideo','sDesc'); 

    //Loop the above and match with $_POST[*] 
    foreach($keys as $key=>$value){ 
     if(isset($_POST[$key])){ 
      $insert[':'.$key] = $value; 
     }else{ 
      $error[$key] = "*required"; 
     } 
    } 

    //ok $error is empty lets go further 
    if(empty($error)){ 
     //Check files array for error 
     if(isset($_FILES['sPic']['name']) && $_FILES['sPic']['error'] == 0){ 
      //Writes the photo to the server 
      if(move_uploaded_file($_FILES['sPic']['tmp_name'], $target.basename($_FILES['sPic']['name']))) 
      { 
       //Insert into sql using a prepared query, matching placeholders 
       $sql = 'INSERT INTO `postdata` VALUES (:sName, :sIp, :sType, :sPort, :sWeb, :sVideo, :sDesc)'; 
       $stmt = $db->prepare($sql); 
       $stmt->execute($insert); 

       //Tells you if its all ok 
       $message = "The file ".htmlspecialchars(basename($_FILES['sPic']['name']))." has been uploaded, and your information has been added to the directory"; 
      } 
      else { 
       $error['upload_error'] = "Sorry, there was a problem uploading your file."; 
      } 
     }else{ 
      //What was the upload error 
      if($_FILES['sPic']['error']==1){$error['upload_error'] = 'The uploaded file exceeds the Max filesize';} 
      if($_FILES['sPic']['error']==2){$error['upload_error'] = 'The uploaded file exceeds the Max filesize of '.ini_get('upload_max_filesize').'MB';} 
      if($_FILES['sPic']['error']==3){$error['upload_error'] = 'The uploaded file was only partially uploaded.';} 
      if($_FILES['sPic']['error']==4){$error['upload_error'] = 'No file was uploaded.';} 
      if($_FILES['sPic']['error']==6){$error['upload_error'] = 'Missing a temporary folder.';} 
      if($_FILES['sPic']['error']==7){$error['upload_error'] = 'Failed to write file to disk.';} 
      if($_FILES['sPic']['error']==8){$error['upload_error'] = 'A PHP extension stopped the file upload.';} 
     } 
    } 

    //Final check on whats gone on 
    if(!empty($error)){ 
     //ill leave you to decide what happens here 
     echo '<pre>'.print_r($error,true).'</pre>'; 
    }else{ 
     //success 
     echo $message; 
    } 

}else{ 
    //do something if not POST 
} 
?> 

Непроверено ...