php - 上传产品 php 脚本不起作用

标签 php jquery html css

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

    <?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'; ?>

最佳答案

您可以检查几项以使其正确。由于这是一个文件资源,因此您还必须在代码之外思考。我知道从过去 5 天开始你已经做了很多研发工作并且可能已经完成了下面提到的所有步骤但是再试一次。我希望它能解决您的问题。

  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 360​​0

    php_value max_execution_time 360​​0

在您的 .htaccess 中输入此代码,并根据需要更改值。

关于php - 上传产品 php 脚本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42266994/

相关文章:

php - 电子邮件作为对象名称

php - 如何将行值匹配为同级结果中参数的变量?

JQuery UI Datepicker 在 </body> 之前添加代码 - 搞乱布局

php - 展示10张阵卡

php - 在 PHP 中执行 Hook 方法

php - 将表的内容保存到变量中

jQuery,onclick 通过转换更改 css 属性

jquery - 使用数组动态 Bootstrap 多选分组

html - DIV到页面右侧

jquery - 将下拉值设置为给定的 ID