2014-04-21 23 views
10

Tôi về cơ bản đã mã hóa một mã chứa danh sách các loại từ cơ sở dữ liệu của tôi, sau đó bạn có thể chọn để xóa.Lỗi biểu thức Isset

Tôi có vấn đề với mã xóa mà dường như không làm việc do lỗi:

Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in F:\xamppnew\htdocs\650032\admin\delete.php on line 6 

Dòng gây ra điều này là:

if(isset($_POST['delete_id'] && !empty($_POST['delete_id']))) { 

deletecategory.php

<h3> 
    Delete Category 
    </h3> 

    <?php $result = mysql_query("SELECT * FROM category"); ?> 

<table> 
    <?php while($row = mysql_fetch_array($result)) : ?> 
    <tr id="<?php echo $row['category_id']; ?>"> 
    <td><?php echo $row['category_Name']; ?></td> 
    <td> 
     <button class="del_btn" rel="<?php echo $row['id']; ?>">Delete</button> 
    </td> 
    </tr> 
    <?php endwhile; ?> 
</table> 

<script> 
    $(document).ready(function(){ 
    $('.del_btn').click(function(){ 
     var del_id = $(this).attr('rel'); 
     $.post('delete.php', {delete_id:del_id}, function(data) { 
      if(data == 'true') { 
      $('#'+del_id).remove(); 
      } else { 
      alert('Could not delete!'); 
      } 
     }); 
    }); 
    }); 
</script> 

delete.php

<?php 
    if(isset($_POST['delete_id'] && !empty($_POST['delete_id']))) { 
     $delete_id = mysql_real_escape_string($_POST['delete_id']); 
     $result = mysql_query("DELETE FROM category WHERE `id`=".$delete_id); 
     if($result !== false) { 
     echo 'true'; 
     } 
    } 
    ?> 
+0

Mã của bạn là dễ bị tổn thương để tiêm SQL. ['mysql_real_escape_string' chỉ hoạt động nếu giá trị được sử dụng trong một chuỗi ký tự MySQL.] (http://security.stackexchange.com/a/35718/539) – Gumbo

+0

Không cần sử dụng' isset() 'và' ! empty() 'cùng một lúc. 'empty' cũng hoạt động nếu đầu vào không được xác định: https://stackoverflow.com/questions/4559925/why-check-both-isset-and-empty – Adam

Trả lời

30

Bạn bỏ lỡ này ):

if(isset($_POST['delete_id']) && !empty($_POST['delete_id'])) 
          ^--- 
3

Vấn đề là điều này

if(isset($_POST['delete_id'] && !empty($_POST['delete_id']))) 

nên

if(isset($_POST['delete_id']) && !empty($_POST['delete_id'])) 
5

Những người khác đã cho thấy vấn đề của thiếu ) trong biểu thức , nhưng empty() sẽ kiểm tra isset() sao cho không cần thiết. Chỉ cần kiểm tra empty():

if(!empty($_POST['delete_id'])) { 
0

Vấn đề là điều này

if(isset($_POST['delete_id'] && !empty($_POST['delete_id']))) 

nên

if((isset($_POST['delete_id'])) && (!empty($_POST['delete_id']))) 
Các vấn đề liên quan