2013-10-23 116 views
4

刪除工程和頁面重定向,但刪除後的網址是http://localhost:/manage_items.php?yesdelete=23這是爲什麼?它應該是之前的任何類型的輸出去的瀏覽器才能正常工作manage_items.php沒有正確重定向與標題

while ($row = $get_products->fetch()) { 
    $item_id = $row['item_id']; 
    $user_id = $row['user_id']; 
    $item_name = $row['item_name']; 
    $date = $row['add_date']; 
    $image = $row['photopath']; 
    $products .= "<br/><img src = $image><img> Item ID: $item_id UserID: $user_id NAME: 
        $item_name Added on: $date &nbsp 
        <a href='item_edit.php?pid=$item_id'>Edit</a>&nbsp 
        <a href='manage_items.php?deleted=$item_id'>Delete</a>"; 
} 

//delete Item 

if(isset($_GET['deleted'])) { 
    echo 'delete this product?'.$_GET['deleted'].'<a 
     href="manage_items.php?yesdelete='.$_GET['deleted'].'">Yes<a/> 
     /<a href ="manage_items.php">No</a>'; 
    exit(); 
} 

if(isset($_GET['yesdelete'])) { 
    $deleteid = $_GET['yesdelete']; 
    $sql = $db->exec("DELETE FROM item WHERE `item_id` = '$deleteid' LIMIT 1"); 
    $image_delete = 'file_to/$deleteid'; 

    if(file_exists($image_delete)) { 
    unlink($image_delete); 
    } 
    header("Location: manage_items.php"); 
    exit(); 
} 
+11

_1._ **你的代碼是容易受到SQL注入** ** _2._你的代碼很容易受到XSS * * –

+0

@NullPoiиteя是的,我知道,但這不是我關心的問題。 – rogerthat

+0

你有什麼錯誤嗎? – bansi

回答

0

頭必須調用,即使我沒有看到整個代碼,我看到你在輸出空字符串:

?> 
    <?php 

刪除所有這樣的地方和可能的其他地方輸出可以做到的 - 那麼重定向將工作

還,我真的建議你使用正確的重定向:

function redirect($url) 
{ 
    if (!headers_sent()) 
    { 
     if (strtoupper($_SERVER['SERVER_PROTOCOL']) == 'HTTP/1.1') 
      @header('HTTP/1.1 303 See Other', true, 303); 
     else 
      @header('HTTP/1.0 302 Found', true, 302); 
     @header('Location: ' . $url); 
     @header('Content-type: text/html'); 
    } 

    echo '<html><head><title>Redirect</title><meta http-equiv="Refresh" content="0;URL='.htmlspecialchars($url).'"></head><body>'. 
     '<a href="'.htmlspecialchars($url).'">Click here</a>'. 
     '</body></html>'; 
    @ob_flush(); 
    exit(); 
} 
+2

OP已經確認重定向發生。這不是*頭已經發送*問題 – Phil

0

看起來像是一個已經發送頭的情況。

您必須執行以下操作。

  1. 刪除代碼塊。

    ?> <?php

  2. 前第一<?

  3. 刪除任何空間和換行符刪除最後?>或者,至少要確保沒有空格或換行之後。
  4. 您可以使用輸出緩衝ob_startob_end_flush

編輯:您重定向之前還發送HTML。在這裏,我重新安排了你的代碼。我已將刪除塊移到開頭。

<?php 
//delete Item 

if(isset($_GET['yesdelete'])) 
{ 
    $deleteid = $_GET['yesdelete']; 

    $sql = $db->exec("DELETE FROM item WHERE `item_id` = '$deleteid' LIMIT 1"); 

    $image_delete = 'file_to/$deleteid'; 

    if(file_exists($image_delete)) 
    { 
     unlink($image_delete); 

    } 
    header("Location: manage_items.php"); 
    exit(); 
} 
while ($row = $get_products->fetch()) 
{ 
    $item_id = $row['item_id']; 
    $user_id = $row['user_id']; 
    $item_name = $row['item_name']; 
    $date = $row['add_date']; 
    $image = $row['photopath']; 
    $products .= "<br/><img src = $image><img> Item ID: $item_id UserID: $user_id NAME: 
        $item_name Added on: $date &nbsp 
        <a href='item_edit.php?pid=$item_id'>Edit</a>&nbsp 
        <a href='manage_items.php?deleted=$item_id'>Delete</a>"; 
} 
if(isset($_GET['deleted'])) 
{ 
    echo 'delete this product?'.$_GET['deleted'].'<a 
      href="manage_items.php?yesdelete='.$_GET['deleted'].'">Yes<a/> 
     /<a href ="manage_items.php">No</a>'; 
    exit(); 
} 
?> 
+2

我不是downvoter,但你的答案表明沒有用。 – mavrosxristoforos

+0

@mavrosxristoforos從這個職位的第一項實際修復錯誤 –

+0

@IlyaBursov你測試? – rogerthat

0

這是問題所在。這是在我的會話框頁面

session_start(); 

if(!isset($_SESSION['id'])) 

{ 
header("Location: yackimo_register_form.php"); 

exit(); 
} 
$userID = $_SESSION['id']; 
echo "";<<<------------ 

壞習慣的頂部

+0

我很高興你找到它。只要確保你下次實際添加所有可疑的代碼。 – mavrosxristoforos

相關問題