2012-10-13 52 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

相关问题