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 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集