2012-10-13 76 views
1

我正在建立一個網站,目的是學習php,在本地開發網站,然後轉移到遠程。根中的一個文件夾是'clients',它由腳本組成,用於列表,插入,更新和刪除表單中的客戶反饋。本地(XAMPP)所有腳本都可以很好地工作。但是,當我將它傳輸到遠程時,一切正常,除了刪除腳本。當我嘗試刪除遠程的條目時,它只是給出了一個未找到頁面的錯誤。我已附上相關的代碼如下。我會很感激的幫助。 1.以下是包含刪除腳本的頁面。PHP刪除腳本只適用於本地,而不適用於遠程

<?php require_once('scripts/db_delete_feedback.php'); ?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Delete Feedback</title> 
<link href="../css/admin.css" rel="stylesheet" type="text/css" /> 
</head> 

<body> 
<h1>Delete Feedback</h1> 
<p><a href="index.php">Admin menu</a></p> 
<p>Please confirm that you want to delete the following record. This cannot be undone.</p> 
<form id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>."> 
<p><strong>Client Name:</strong><?php echo $feedback['name']; ?></p> 
<p><strong>Feedback summary:</strong><?php echo $feedback['punch']; ?></p> 
<p><strong>Rating:</strong><?php echo $feedback['rating']; ?></p> 
<?php if ($photos) { ?> 
<p>The following photos are linked with this client feedback. Select the checkbox next to each photo you want to delete at the same time as this feedback. To delete images without deleting the feedback, use <a href="list_photos.php">photo management page</a>.</p> 
<table width="600"> 
<?php 
$num = 0; 
foreach ($photos as $photo) { ?> 
    <tr> 
    <td><input type="checkbox" name="photo[]" id="photo<?php echo $num;?>" value="<?php echo $photo['filename']; ?>" /> 
     <label for="photo<?php echo $num++; ?>" class="checkbox_label">Delete photo</label></td> 
    <td><img src="../images/<?php echo $photo['filename']; ?>" width="200" alt="" /><br /><?php echo $photo['caption']; ?></td> 
    </tr> 
    <?php } ?> 
</table> 
<?php } ?> 
<p> 
    <input type="submit" name="delete_feedback" id="delete_feedback" value="Confirm Deletion" /> 
    <input type="submit" name="cancel" id="cancel" value="Cancel" /> 
    <input name="returnto" type="hidden" id="returnto" value="<?php echo $returnto; ?>" /> 
    <input name="client_id" type="hidden" id="client_id" value="<?php echo $client_id; ?>" /> 
</p> 
</form> 
</body> 
</html> 
  1. 下面是上面的腳本包含了 'db_delete_feedback.php' 文件:

    <?php 
    $errors = array(); 
    require_once('library.php'); 
    try { 
        require_once('db_definitions.php'); 
        $client_id = checkId('client_id', 'list_feedback.php'); 
        if (isset($_POST['delete_feedback'])) { 
        // delete and redirect 
        $dbWrite->delete('clients', "client_id = $client_id"); 
        $dbWrite->delete('client2photo', "client_id = $client_id"); 
        if (isset($_POST['photo'])) { 
        foreach ($_POST['photo'] as $filename) { 
         $dbWrite->delete('photos', "filename = '$filename'"); 
         unlink($destination . '/' . $filename); 
        } 
        } 
        header('Location: ' . $_POST['returnto']); 
        exit; 
        } elseif (isset($_POST['cancel'])) { 
        header('Location: ' . $_POST['returnto']); 
        exit; 
        } 
        $feedback = getFeedback($dbRead, $client_id); 
        $photos = getRelatedPhotos($dbRead, $client_id); 
        if (isset($_SERVER['HTTP_REFERER'])) { 
        $returnto = $_SERVER['HTTP_REFERER']; 
        } else { 
        $returnto = 'list_feedback.php'; 
        } 
    } catch (Exception $e) { 
        echo $e->getMessage(); 
    } 
    

所包含library.php文件包含路徑Zend框架庫。 請幫忙,因爲我無法找到此問題的原因。

+0

任何想法的人?我已經在php中創建腳本來通過表單插入,更新和刪除條目到數據庫中。除了刪除腳本,所有腳本都可以正常工作。不知何故,似乎數據庫拒絕刪除。刪除腳本在我的本地主機(XAMPP)上正常工作,但不在遠程服務器上。在不執行delete語句的情況下,頁面重定向到調用頁面,在url的末尾添加一個點(。),並且由於該頁面不存在,它將返回404錯誤。 – atomheart

回答

1

最後,我找到了原因。這是一個愚蠢的編碼錯誤。額外的。在表單動作

這並不在遠程服務器上工作,但工作在本地:

<form id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>."> 

而這個工作在遠程服務器上:

<form id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
+0

奇怪的是,帶有額外點的代碼在本地設置上完美工作,但不在遠程服務器上。任何想法爲什麼? – atomheart

1

如果您發現「頁面未找到錯誤」,則可能與腳本本身沒有任何關係,因爲腳本未被服務器找到。

確保您

  1. 上傳刪除腳本肯定。
  2. 腳本文件具有適當的文件權限,因此服務器可以訪問該文件。
  3. 如果這不起作用,請檢查您的服務器錯誤日誌文件(例如/var/log/apache2/error.log)是否有PHP錯誤。
  4. 檢查發生重定向的情況。如果在執行重定向之前在$_POST['returnto']中有任何URL,則不檢查(header('Location: ' . $_POST['returnto']);)。也許沒有給出任何URL,因此重定向無處可去 - 因此「頁面未找到錯誤」。
+0

感謝您的回覆Feeela。我仍然不能把手指放在哪裏是錯的。不知何故,在遠程服務器上,頁面重定向到redirect_page.php,但重定向鏈接在最後得到一個點...(../clients/redirect_page.php。),並且它給出頁面未找到錯誤。如果我可以在遠程訪問它,我將按照您的建議檢查日誌文件。 – atomheart

+0

錯誤日誌說:[error] [client ----]文件不存在:/home/----/public_html/clients/delete_feedback.php。,referer:http://www.---- .COM /客戶/ delete_feedback.php?client_id = 10 – atomheart

+0

@atomheartc這意味着你有一些包含指向錯誤的目錄...... – feeela

相關問題