0

私は次のコードを持っています:

<?php
    define('ENVIRONMENT', 'tests');
    $_POST['id']='AccountPagesView.a_book/45';
    $_POST['old_value']='1';
    $_POST['value']='2';
    header("Location: http://localhost/index.php/welcome/update_record");
?>

このスクリプトで$_POST配列を設定し、URLでスクリプトをロードする必要があります。しかし、urlのスクリプトは、$_POST配列がnullであることを示しています。なんで?$ _POST配列を設定し、URLでスクリプトに送信するにはどうすればよいですか?前もって感謝します。

更新:テストする必要のあるコードがいくつかあり、URL"http://localhost/index.php/welcome/update_record"にスクリプトがあり、$_POST配列の値を使用しています。そのため、このスクリプトを変更することはできず、テストしたいと思います。どうすればいいですか?

UPDATE2:

<?php
    //include ('\application\controllers\welcome.php');
    define('ENVIRONMENT', 'tests');
    $_POST_DATA=array();
    $_POST_DATA['id']='AccountPagesView.a_book/45';
    $_POST_DATA['old_value']='1';
    $_POST_DATA['value']='2';
    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://localhost/index.php/welcome/update_record');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST_DATA);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_exec($ch);
?>
4

5 に答える 5

4

それはいけません。リダイレクトすると、常にGETを介してターゲットページが読み込まれます。

ただし、セッションを使用してこれらの値を保存することはできます。session_start();両方のページで呼び出し、の$_SESSION代わりにスーパーグローバル配列を使用し$_POSTます。

于 2012-07-01T14:53:25.507 に答える
1

これは、JSを使用せずに、あるPHPスクリプトから別のPHPスクリプトにPOST値を送信するために必要なものだと思います。絶対に使用したくない場合は、それを使用$_SESSIONする必要があります。

$ch = curl_init();
$data = array('id' => 'AccountPagesView.a_book/45', 'old_value' => '1', 'value' => '2',);

curl_setopt($ch, CURLOPT_URL, 'http://path-to/other.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
于 2012-07-01T16:19:46.017 に答える
0

2つの答え。以下が機能しない場合:

<?php
    define('ENVIRONMENT', 'tests');
    $_POST['id']='AccountPagesView.a_book/45';
    $_POST['old_value']='1';
    $_POST['value']='2';
    require("/index.php/welcome/update_record");
?>

(私はページのURLに少し戸惑っています。)

それで:

POSTを主張するとき(質問する権利と同様に)、次のことができます。

<html>
  <head>
  </head>
  <body>
    <form action="/index.php/welcome/update_record" method="post">
      <input type="hidden" name="id" value="AccountPagesView.a_book/45">
      <input type="hidden" name="old_value" value="1">
      <input type="hidden" name="value" value="2">
      <input type="hidden" name="ENVIRONMENT" value="tests">
    </form>
    <script type="text/javascript">
       document.forms[0].submit();
    </script>
  </body>
</html>

その環境の定義をなんとかして解決する必要があるところ。

ターゲットスクリプトが$_POST+ $ _GET(io $ _POST)である$ _REQUESTを使用する場合は、HTTPGETURLを実行します。...-?id=...&old_value=1&value=2これが最も簡単な解決策です。

于 2012-07-01T16:19:59.323 に答える
0

$_POSTリクエストがPOSTメソッドを介して送信された場合にのみ存在します。つまり、フォームが送信されました。

代わりに使用できます$_SESSION

于 2012-07-01T14:53:36.277 に答える
0

これが、$_SESSION を使用する主な理由の 1 つです。説明については、この他の質問を参照してください: PHP - POST 変数を header() で渡しますか?

<?php
session_start();
define('ENVIRONMENT', 'tests');
$_SESSION['id']='AccountPagesView.a_book/45';
$_SESSION['old_value']='1';
$_SESSION['value']='2';
header("Location: http://localhost/index.php/welcome/update_record");

次に index.php/welcome/update_record で

<?php
session_start();
define('ENVIRONMENT', 'tests');
$id = $_SESSION['id'];
$old_value =  $_SESSION['old_value'];
$value = $_SESSION['value'];

//do something
于 2012-07-01T15:23:39.390 に答える