1

ユーザーはページ 1 でフォームに入力します。フォームは POST でページ 2 に送信されます。ページ2はデータベースを挿入しますが、セッション変数に保存されているユーザーIDを挿入する必要があるため、そのセッション変数を取得するにはセッションを開始する必要がありますが、最後にヘッダーリダイレクトを使用して再停止することはできません提出物。ユーザーIDをページ1の非表示の入力に設定したくありません。これは、なりすましがかなり簡単になるためです。私は明らかにベスト プラクティスと一致しないことを行っています。どうすればよいですか?

    <?php
@session_start();
require_once '../Classes/Communication.php';
require_once '../Classes/Communication_db.php';
$noteDate=$_POST["noteDate"];
$noteContact = $_POST["noteContact"];
$note= $_POST["note"];
$custID = $_POST["custID"];

$comm = new Communication();
$comm->setCustomerID($custID);
$comm->setCommunicationDate(date("Y-m-d", strtotime($noteDate)));
$comm->setCustomerContactID($noteContact);
$comm->setNotes($note);
$comm->setUserID($_SESSION["userID"]);

Communication_db::saveCommunication($comm);

header("Location: ./index.php?action=newCustomer",303);

?>
4

2 に答える 2

6

<?phpタグの前の空白を取り除きます。その空白は送信され、その後は呼び出すことができませんheader()

また、以前の場所で session_start を呼び出している可能性があります (またはライブラリがこれを行っています)。一度だけ呼び出すことができます。これを試して:

if (!isset($_SESSION)) {
   session_start();
}
于 2012-09-28T17:38:53.593 に答える
1

session_start はヘッダーの設定を妨げませんが、ヘッダー宣言の前に出力を吐き出します。たとえそれがphpの警告または通知であってもです。@Ray が気づいたスペースを取り除き、ヘッダー行の前に何らかの出力を生成する可能性のある他のものも修正します。

于 2012-09-28T17:38:59.567 に答える