1

私は、PHPを学習し、ローカルでWebサイトを開発してから、リモートに転送することを目的としてWebサイトを構築しています。ルート内のフォルダーの1つは「clients」です。これは、フォームからクライアントのフィードバックを一覧表示、挿入、更新、および削除するためのスクリプトで構成されています。ローカル(XAMPP)では、すべてのスクリプトが完全に機能します。しかし、それをリモートに転送すると、削除スクリプトを除いて、すべてが正常に機能します。リモートでエントリを削除しようとすると、ページが見つかりませんというエラーが表示されます。関連するコードを以下のように添付しました。助けていただければ幸いです。1.以下は、削除スクリプトのあるページです。

<?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フレームワークライブラリへのパスが含まれています。この問題の原因を見つけることができませんので、助けてください。

4

2 に答える 2

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']; ?>">
于 2012-10-15T08:00:29.227 に答える
1

「ページが見つかりません」というエラーが発生した場合は、サーバーによってスクリプトが見つからなかったため、スクリプト自体とは関係がない可能性があります。

あなたを確認してください

  1. 確かに削除スクリプトをアップロードしました。
  2. スクリプトファイルには適切なファイル権限があるため、サーバーはそのファイルにアクセスできます。
  3. それでも問題が解決しない場合は、サーバーのエラーログファイル(例/var/log/apache2/error.log)でPHPエラーを確認してください。
  4. リダイレクトが発生するケースを確認してください。$_POST['returnto']リダイレクト()を実行する前に、指定されたURLがあるかどうかはチェックしませんheader( 'Location: ' . $_POST['returnto'] );。URLが指定されていないため、リダイレクトがどこにも行かない可能性があります。したがって、「ページが見つかりません」というエラーが発生します。
于 2012-10-13T14:09:21.200 に答える