1

検証が必要なファイル入力が含まれているため、php を使用してフォームを検証しようとしています。

基本的に、私のフォームのアクションはそれをvalidate.phpに送信します。これはフォームフィールドを検証し、cURLでPOSTを使用して無効なデータをフォームに送り返します:

$data = array(
    'nameError' => $nameError,
    'name' => $name,
    'description' => $desc,
    'descError' => $descError,
    'spriceError' => $spriceError,
    'sprice' => $sprice,
    'iprice' => $iprice,
    'incprice' => $incprice,
    'incprice' => $incprice,
    'durError' => $durError,
    'location' => $location,
    'img' => $imgError
);

foreach($data as $key=>$value){
    $field_string .= $key.'='.$value.'&';

}
rtrim($field_string, '&');


$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'sellanitem.php');
curl_setopt($ch, CURLOPT_POST, count($data));
curl_setopt($ch, CURLOPT_POSTFIELDS, $field_string);

curl_exec($ch);

curl_close($ch);
header("Location: sellanitem.php");

私のフォームページで、投稿データが設定されているかどうかを確認します:

if(isset($_POST['name'])){
    $name = $_POST['name'];

}else{
    $name = "";
}

if(isset($_POST['nameError'])){
    $nameError = $_POST['nameError'];
}else{
    $nameError = "";
}

if(isset($_POST['durError'])){
    $durError = $_POST['durError'];

}else{
    $durError = "";
}

if(isset($_POST['description'])){
    $desc = $_POST['description'];

}else{
    $desc = "";
}

次に、変数の値に基づいてメッセージを表示します。

            <td>
                <textarea id="name" name="name" title="name" rows="2" cols ="60" style="resize:none; float:right; font-family: Arial;" value=""><?php echo $name;?></textarea>
<?php
if($nameError != ""){
    echo $nameError;
}

Googleで「フォームを自動的に送信するphp」を検索した後、このメソッドにたどり着きました。私の考えでは、フォームを自動的に送信できれば、エラー メッセージをデータ フィールドとして含めるだけで、sellanitem.php に戻すことができます。私は考えを知りません、このcURLは私を混乱させます.これまでのところ、無効な入力を含むフォームフィールドを送信してテストし、空白のページをロードするだけです. header("location: Sellanitem.php") も入れてみましたが、エラーメッセージが表示されません。

何が間違っている可能性があるか、または同じ結果を達成する代替方法の提案はありますか?

乾杯、バンディ

4

2 に答える 2

3

cURL リクエストからの戻り値を解析する場合は、次のものが必要です。

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

に加えて

$output = curl_exec($ch);

ただし、それはローカル ファイルのようです...include 'sellanitem.php'投稿データを cURL 経由で渡すのではなく、なぜできないのでしょうか。

また、LocationヘッダーはAbsolute URI

于 2012-09-18T13:33:01.500 に答える
1

出力バッファを設定していないため、exec を変数に割り当てる必要があります。

$data = curl_exec($ch);

データはそれが返すものです。エラーのjson文字列などを送り返す場合は、ゴールデンです。

于 2012-09-18T13:25:54.157 に答える