dongyan3018 2017-02-16 06:58
浏览 50
已采纳

上传产品php脚本无法正常工作

I created a Phpscript to upload products to my website but its not working and also not show any error. I'm stuck in this problem more than 5 days I'm still finding the mistake but I can't please anyone check my codes I need help immediately.

    <?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'; ?>
  • 写回答

1条回答 默认 最新

  • dongzhi6146 2017-02-16 07:20
    关注

    Few things you can check to make this proper. As this is a file resource so you have to think outside the code also. I know from last 5 days you have done a lot of R&D and might have finished all below mentioned steps but try these one more time. I hope it will solve your problem.

    1. where you are uploading is having proper write permission or not
    2. make error reporting available on top of the code
    3. create error log wherever you are using move_uploaded_file
    4. check with breakpoints wether your code is reaching till uploading point of code or not
    5. as said in comments of your question check what move_uploaded_file function returns.
    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 3600

    Enter this code in your .htaccess with changing value as you need.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 etcd集群部署问题
  • ¥20 谁可以帮我一下问一下各位
  • ¥15 为何重叠加权后love图的SMD与svyCreateTableOne函数绘制基线表的不一致
  • ¥15 QFILHelper怎么恢复全字库,提示进程已完成,只能恢复分区文件
  • ¥150 求 小魔指游戏板整合模拟软件
  • ¥20 你好,我想问下easyExcel下拉多选,或者复选框可以实现吗
  • ¥20 双非跨考工科哪个专业和方向就业前景好?
  • ¥20 求会6sv辐射传输模型,辅导(可py6s🙏🏻有偿
  • ¥15 .xla后缀的文件拖到excel里什么内容也没有怎么办
  • ¥20 Workbench中Mechanical打不开、闪退是什么原因?