2017-02-16 115 views
0

我创建了一个Php脚本将产品上传到我的网站,但它不工作,也没有显示任何错误。我被困在这个问题超过5天,我仍然发现了错误,但我不能请任何人检查我的代码,我需要立即帮助。上传产品php脚本不能正常工作

<?php 
require_once $_SERVER['DOCUMENT_ROOT'].'/tutorial/core/init.php'; 
if(!is_logged_in()){ 
    login_error_redirect(); 
} 
include 'includes/head.php'; 
include 'includes/navigation.php'; 
if (isset($_GET['add'])) { 
    $brandQuery = $db->query("SELECT * FROM brand ORDER BY brand"); 
    $parentQuery = $db->query("SELECT * FROM categories WHERE parent = 0 ORDER BY category"); 
    if ($_POST) { 
    $title = sanitize($_POST['title']); 
    $brand = sanitize($_POST['brand']); 
    $categories = sanitize($_POST['child']); 
    $price = sanitize($_POST['price']); 
    $list_price = sanitize($_POST['list_price']); 
    $sizes = sanitize($_POST['sizes']); 
    $description = sanitize($_POST['description']); 
    $dbpath = ''; 
    $errors= array(); 
    if(!empty($_POST['sizes'])) { 
     $sizeString = sanitize($_POST['sizes']); 
     $sizeString = rtrim($sizeString,','); 
     $sizesArray = explode(',',$sizeString); 
     $sArray = array(); 
     $qArray = array(); 
     foreach($sizesArray as $ss){ 
     $s = explode(':', $ss); 
     $sArray[] = $s[0]; 
     $qArray[] = $s[1]; 
     } 
    }else{$sizesArray = array();} 
    $required = array('title','brand','price','parent','child','sizes'); 
    foreach($required as $field){ 
     if($_POST[$field] == ''){ 
     $errors[] = 'All Field With and Astrisk are required.'; 
     break; 
     } 
    } 
    if (!empty($_FILES)) { 
     var_dump($_FILES); 
     $photo = $_FILES['photo']; 
     $name = $photo['name']; 
     $nameArray = explode('.',$name); 
     $fileName = $nameArray[0]; 
     $fileExt = $nameArray[1]; 
     $mime = explode('/',$photo['type']); 
     $mimeType = $mime[0]; 
     $mimeExt = $mime['1']; 
     $tmpLoc = $photo['tmp_name']; 
     $fileSize = $photo['size']; 
     $allowed = array('png','jpg','jpeg','gif'); 
     $uploadName = md5(microtime()).'.'.$fileExt; 
     $uploadPath = BASEURL.'images/proimg/'.$uploadName; 
     $dbpath = '/tutorial/images/proimg/'.$uploadName; 
     if ($mimeType != 'image') { 
     $errors[] = 'The file must be an image.'; 
     } 
     if (!in_array($fileExt, $allowed)) { 
     $errors[] = 'The file extension must be a png, jpg, or gif'; 
     } 
     if ($fileSize > 15000000) { 
     $errors[] = 'The file size must be under 15MB.'; 
     } 
     if($fileExt != $mimeExt && ($mimeExt == 'jpeg' && $fileExt != 'jpg')){ 
     $errors[] = 'File extension does not match the file.'; 
     } 
    } 
    if(!empty($errors)){ 
     echo display_errors($errors); 
    }else{ 
     //upload file and insert into database 
     move_uploaded_file($tmpLoc,$uploadPath); 
     $insertSql = "INSERT INTO products ('title','price','list_price','brand','categories','image','sizes','description') VALUES 
     ('$title','$price','$list_price','$brand','$categories','$sizes','$dbpath','$description')"; 
     $db->query($insertSql); 
     header('Location: products.php'); 

    } 
    } 
?> 
    <h2 class="text-center">Add A New Product</h2><hr> 
    <form action="products.php?add=1" method="POST" enctype="multipart/form-data"> 
     <div class="form-group col-md-3"> 
      <label for="title">Title*:</label> 
      <input type="text" name="title" class="form-control" id="title" value="<?=((isset($_POST['title']))?sanitize($_POST['title']):''); ?>"> 
     </div> 
     <div class="form-group col-md-3"> 
      <label for="brand">Brand*:</label> 
      <select class="form-control" id="brand" name="brand"> 
       <option value=""<?= ((isset($_POST['brand']) && $_POST['brand'] == '')?' selected':''); ?>></option> 
       <?php while($brand = mysqli_fetch_assoc($brandQuery)): ?> 
       <option value="<?=$brand['id'];?>"<?=((isset($_POST['brand']) && $_POST['brand'] == $brand['id'])?' selected':''); ?>><?=$brand['brand'];?></option> 

       <?php endwhile; ?>  
      </select> 
     </div> 
     <div class="form-group col-md-3"> 
      <label for="parent">Parent Category*:</label> 
      <select class="form-control" id="parent" name="parent"> 
       <option value=""<?=((isset($_POST['parent']) && $_POST['parent'] == '')?' selected':''); ?>></option> 
       <?php while($parent = mysqli_fetch_assoc($parentQuery)): ?> 
       <option value="<?=$parent['id'];?>"<?= ((isset($_POST['parent']) && $_POST['parent'] == $parent['id'])?' select':'') ?>><?=$parent['category'];?></option> 
       <?php endwhile; ?> 
      </select> 
     </div> 
     <div class="form-group col-md-3"> 
      <label for="child">Child Category*:</label> 
      <select id="child" name="child" class="form-control"> 

      </select> 
     </div> 
     <div class="form-group col-md-3"> 
      <label for="price">Price*:</label> 
      <input type="text" id="price" name="price" class="form-control" value="<?=((isset($_POST['price']))?sanitize($_POST['price']):'');?>"> 
     </div> 
     <div class="form-group col-md-3"> 
      <label for="price">list-Price*:</label> 
      <input type="text" id="list_price" name="list_price" class="form-control" value="<?=((isset($_POST['list_price']))?sanitize($_POST['list_price']):'');?>"> 
     </div> 

     <div class="from-group col-md-3"> 
      <label>Quantity & more</label> 
      <button class="btn btn-default form-control" onclick="jQuery('#sizesModal').modal('toggle');return false;">Quantity</button> 
     </div> 
     <div class="from-group col-md-3"> 
     <label>Quantity Preview</label> 
     <input type="text" class="form-control" name="sizes" id="sizes" value="<?=((isset($_POST['sizes']))?$_POST['sizes']:'');?>" readonly> 
     </div> 
     <div class="form-group col-md-6"> 
      <label for="photo">Product Photo:</label> 
      <input type="file" name="photo" id="photo" class="form-control"> 
     </div> 
     <div class="form-group col-md-6"> 
      <label for="description">Description:</label> 
      <textarea id="description" name="description" class="form-control" rows="6"><?= ((isset($_POST['description']))?sanitize($_POST['description']):'');?></textarea> 
     </div> 
     <div class="form-group"> 
     <input type="submit" value="Add Product" class="form-control btn btn-success"> 
     </div><div class="clearfix"></div> 

    </form> 
    <!-- Modal --> 
    <div class="modal fade" id="sizesModal" tabindex="-1" role="dialog" aria-labelledby="sizesModalLabel"> 
    <div class="modal-dialog modal-lg" role="document"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
     <h4 class="modal-title" id="sizesModalLabel">Quantity & about</h4> 
     </div> 
     <div class="modal-body"> 
     <div class="container-fluid"> 
     <?php for ($i=1; $i <= 1;$i++): ?> 
      <div class="form-group col-md-4"> 
      <label for="size<?=$i; ?>">More info:</label> 
      <input type="text" name="size <?=$i; ?>" id="size<?=$i; ?>" value="<?=((!empty($sArray[$i-1]))?$sArray[$i-1]:''); ?>" class="form-control"> 
      </div> 
      <div class="form-group col-md-2"> 
      <label for="qty<?=$i; ?>">Quantity:</label> 
      <input type="number" name="qty<?=$i; ?>" id="qty<?=$i; ?>" value="<?=((!empty($qArray[$i-1]))?$qArray[$i-1]:''); ?>" min="0" class="form-control"> 
      </div> 
     <?php endfor; ?> 
     </div> 
     </div> 
     <div class="modal-footer"> 
     <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
     <button type="button" class="btn btn-primary" onclick="updateSizes();jQuery('#sizesModal').modal('toggle');return false;">Save changes</button> 
     </div> 
    </div> 
    </div> 
</div> 

<?php } else { 

$sql = "SELECT * FROM products WHERE deleted = 0"; 
$presults = $db->query($sql); 
if (isset($_GET['featured'])) { 
    $id = (int)$_GET['id']; 
    $featured = (int)$_GET['featured']; 
    $featuredSql = "UPDATE products SET featured = '$featured' WHERE id = '$id'"; 
    $db->query($featuredSql); 
    header('Location: products.php'); 
} 
?> 
<h2 class="text-center">Upload Products</h2> 
<a href="products.php?add=1" class="btn btn-success pull-right" id="add-product-btn" style="margin-right: 100px;">Add Product</a><div class="clearfix"></div> 
<hr> 
<table class="table table-bordered table-condensed table-striped"> 
<thread> 
<th></th> <th>Product</th> <th>Price</th> <th>Category</th> <th>Feature</th> <th>Sold</th> 
</thread> 
<tbody> 
    <?php while($product = mysqli_fetch_assoc($presults)): 
      $childID = $product['categories']; 
      $catSql = "SELECT * FROM categories WHERE id = '$childID'"; 
      $result = $db->query($catSql); 
      $child = mysqli_fetch_assoc($result); 
      $parentID = $child['parent']; 
      $pSql = "SELECT * FROM categories WHERE id = '$parentID'"; 
      $presult = $db->query($pSql); 
      $parent = mysqli_fetch_assoc($presult); 
      $category = $parent['category']. '~'.$child['category']; 
    ?> 
     <tr> 
      <td> 
       <a href="products.php?edit=<?=$product['id'];?>" class="btn btn-xs btn-default"><span class="glyphicon glyphicon-pencil"></span></a> 
       <a href="products.php?delete=<?=$product['id'];?>" class="btn btn-xs btn-default"><span class="glyphicon glyphicon-remove"></span></a> 

      </td> 
      <td><?=$product['title']; ?></td> 
      <td><?=money($product['price']); ?></td> 
      <td><?= $category; ?></td> 
      <td><a href="products.php?featured=<?=(($product['featured'] == 0)?'1':'0');?>&id=<?=$product['id']; ?>" class="btn btn-xs btn-default"> 
      <span class="glyphicon glyphicon-<?=(($product['featured']==1)?'minus':'plus');?>"></span> 
      </a>&nbsp <?=(($product['featured'] == 1)?'Featured Product':'');?></td> 
      <td>0</td> 
     </tr> 

    <?php endwhile; ?> 
</tbody> 
</table> 

<?php } include 'includes/footer.php'; ?> 
+0

检查move_uploaded_file函数返回的结果(true/false)。 –

+0

Where @Param Bhat –

+0

//上传文件并插入到数据库中move_uploaded_file($ tmpLoc,$ uploadPath); =>如果文件正在上传,请检查这一行。添加if(move_uploaded_file($ tmpLoc,$ uploadPath)){echo“true”; } else else {echo“false”;} –

回答

1

你可以检查一些事情,使之合适。由于这是一个文件资源,因此您必须在代码之外进行思考。我知道从过去5天你已经完成了很多R & D,并且可能已经完成了下面提到的所有步骤,但再试一次。我希望它能解决你的问题。

  1. 你在哪里上载是一种具有正确的写权限或代码
  2. 创建错误的顶部不
  3. 使错误报告可用的日志随时随地可以使用move_uploaded_file
  4. 检查与断点阉你的代码直到上传点代码
  5. 如在你的问题的评论中说的检查move_uploaded_file函数返回什么。
  6. Check this link also for step by step error check on file upload

    php_value的upload_max_filesize = 16G

    php_value的post_max_size = 16G

    php_value max_input_time设置3600

    php_value的max_execution_time 360​​0

与你的.htaccess中输入验证码根据需要改变价值。