-1

名前とメールアドレスの2つのフィールドを持つフォームがあり、以下のように特定のURLでそのフォームの値を送信する必要があります

http://www.abc.co.uk/acy/xyzerequest&name='me'&email='me@gmail.com'

このために、フォームを作成してphpファイルに投稿します。$ _ POSTを使用して値を取得していますが、行き詰まっていると感じるのは、これらの値を特定のURLに送信する方法ですが、ユーザーは知らないはずです。

したがって、エンドユーザーは名前と電子メールIDを入力し、そのURLに値を指定するだけです。

どうすれば達成できるか教えてください。私は過去3時間から試していましたが、運が悪かったです。

4

7 に答える 7

0

片付けさせてください、

  1. 送信には2つの値(名前、電子メール)が含まれます。
  2. 次に、これら2つを別のURLで処理します。

私が正しければ、次のようなPHPの「ヘッダー」関数を使用できます。

<?php
    header("Location:http://www.abc.co.uk/acy/xyzerequest?name=".$_POST['name']."&email=".$_POST['email']);
?>

この場合、ヘッダー値を含む空白の応答は、次のようにクライアントまたはブラウザーに送信されます。

<some header value>
Contet-Type:text/plain
Location:http://www.abc.co.uk/acy/xyzerequest?name=foo@email=foo@gmail.com
<some header value>

そのため、それらの名前と電子メールの値はすべての人に知られています。

PHPは、クライアントへのページのレンダリングの最後に変数スコープを失うためです。したがって、値を変数に格納することは無意味です。ただし、別のオプションがあります。$ _ SESSION変数を使用することで、これを実現できます。

  1. フォーム送信時に、次のように設定されたセッション値を送信します。

    <?php $ _SESSION ['name'] = $ _POST ['name']; $ _SESSION ['email'] = $ _POST ['email']; ?>

次に、特定のURLにリダイレクトします。

<?php
  header("Location:http://www.abc.co.uk/acy/xyzerequest");
?>

2.リダイレクトされたURLのハンドラーで、セッションからこれらの値を読み取ることができます。

<?php
  $name = $_SESSION['name'];
  $email = $_SESSION['email'];
?>

そのため、値は非表示になり、別のページハンドラーを使用できます。

于 2013-01-07T14:15:25.513 に答える
0

私が理解しているように、スクリプトでユーザーの名前と電子メールを収集し、URLを作成して、ユーザーをリダイレクトする必要があります。

したがって、スクリプトは次のようになります(これは単なるガイドラインです)。

    <?php
    if(isset($_POST['submit'])){
        $name = $_POST["name"];
        $email = $_POST["email"];

        //create the URL
        $url = "http://www.example.com/yourpage.php?name=" . urlencode($name) . "&email=" . urlencode($email);

        //send the header
        header("Location: " . $url);
        //exit the script
        exit();
    }
    ?>
    <html>
      <body>
        <form method="post" action="" name="name">
          Name:<input type="text" name="name">
          Email:<input type="text" name="name">
          <input type="submit">
        </form>
      </body>
    </html>

URLに関する限り、?は「変数」の開始位置を示します。

特に他のスクリプトの1つに送信する場合は、生のユーザーデータからURLを作成しないでください。常にを使用する必要がありますurlencode($data)。これにより、データURLが安全になります。また、データの検証とスクラブも検討する必要があります。

したがって、このスクリプトが行うことは、最初に何かが投稿されているかどうかを確認し、投稿されている場合は、データを収集し、URLを作成し、リダイレクト用のヘッダーを送信して終了します。そうでない場合は、ユーザーが情報を入力するためのフォームが表示されます。

于 2013-01-07T14:04:21.493 に答える
0

一部の人々がすでに提案しているように、これを行う最も簡単な方法 (投稿データでリダイレクトする必要がある場合) は、非表示のフォームを作成して自動的に送信することです。

$form = "<form name='autoForm' method='post' action='http://www.abc.co.uk/acy/xyzerequest'>
             <input type='hidden' name='name' value='{$_POST['name']}' />
             <input type='hidden' name='email' value='{$_POST['email']}' />
             <script type='text/javascript' language='javascript'>
                 document.autoForm.submit();
             </script>
         </form>";

echo $form;

これにより、データを使用してフォームが自動的に作成され、post送信されます。

于 2013-01-07T14:46:31.020 に答える
0

Location:関数を使用してヘッダーを設定することにより、別のページにリダイレクトしheaderます。例:

header("Location: http://stackoverflow.com/");

@lampwins が指摘したように、通常、これは と一緒に使用されexitます。ページの残りの部分が実行されないようにします (異常な副作用や不要なサーバー負荷を引き起こす可能性があるため)。

于 2013-01-07T13:47:50.193 に答える
0

これを行う 1 つの方法は、form.php などのフォームを使用してフォームを表示し、それ自体にリダイレクトして、action=myphp の代わりにそのフォームの処理を行うことです。form.php を配置するだけで、それ自体にリダイレクトされます。上で必要なことを行います。これにより、URL でパスワードを送信する必要がなくなります。

<?php 
if(isset($_POST['submit'])) {
   $name  = $_POST['name'];
   $email = $_POST['email'];

   // do here whatever you wanted to do with the user and email in your form
   // you can show a different html page or redirect on, or login or whatever.
}  else {
   // the form html elements will only show if the form is not already submitted by the user.  This allows you to do what you need to do on one page without processing and then redirecting using the header.
?>
<!-- form.php -->
<form method=post action="form.php">
name <input name="name" value="" size="10" /><br />
email <input name="email" value="" size="25" /><br />
<input type="submit" name="submit" value="go" />
</form>
<?php
   }
?>
于 2013-01-07T14:00:53.057 に答える
0

他の人が言ったように、あなたの質問はあまり明確ではありません。

私がそれを正しく理解していれば、ユーザーが送信ボタンをクリックしたときにその URL が表示されるようにする必要があります。

その場合、フォームに投稿するのではなく、GET を使用する必要があります。パスワードなどの情報を渡す場合、情報が URL に直接表示されるため、GET を使用することはお勧めできません。

また、get it を使用しないでください。上記のアクションの結果、サーバー側のリソースが変更されます。取得できるのは表示のみで、リソースの変更はできません。

EDIT:他の人が質問をよりよく理解しているようです.header( "Location:someurl")にパラメータが追加されているようです。

于 2013-01-07T13:43:14.870 に答える
-1
<?php
$user = $_GET["user"];
$pass = $_GET["pass"];

   header( 'http://www.abc.co.uk/acy/xyzerequest&name=' . $user . '&email=' . $pass ) ;

?>
于 2013-01-07T13:45:39.520 に答える