header()関数の使い方と引数について

このQ&Aのポイント
  • header()関数は、指定した場所にページをリダイレクトさせるための関数です。
  • 引数なしで使用する場合、簡単にリダイレクトできますが、引数を渡すことはできません。
  • 引数と一緒にリダイレクトしたい場合は、セッションやクエリ文字列を使用することができます。
回答を見る
  • ベストアンサー

header()関数について

今、文字が入力されてなかったらHeader関数を使いあるページにとばそうとしてますが、Header関数に引数もつけて送ることはできないのでしょうか? 下記のソースはわかりやすくする為部分的に割愛してます (例) [index.phtml] <form action="1.phtml"> <input type="text" name="name"> <input type="submit"> </form> -------------------------------- [1.phtml] if(文字数が0の場合){   header("Location: error.phtml"); }else{   正常処理 } ↑↑ 文字数が0の時にerror.phtmlに飛ばすのだがこの時に引数($name)も一緒に飛ばしたい時どうすればいいでしょうか?

  • PHP
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

if(文字数が0の場合){   header("Location: error.phtml?var=$name"); }else{ でだめですか? $_GET['var']か $HTTP_GET_VARS['var']で受け取れると 思いますが。

その他の回答 (1)

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

header("Location: error.phtml/$name"); としてみたら どうでしょうか?

関連するQ&A

  • ブラウザのURL表示に関して

    質問なんですが、テキストフォームに文字を入力して次の画面に遷移した場合、ブラウザのURLに入力した引数が表うじされてしまいますが、これを非表示するにはどうすればいいでしょうか? ちなみにソースは以下です。一部分は割愛してます。 送信ボタン押してブラウザのURL表示をみると http://127.0.0.1/02.phtml?age=23 になってしまう <form action="02.phtml"> <input type="text" name="age"> <input type="submit" value="送信"> </form>

    • ベストアンサー
    • PHP
  • header(Location: next.php) だとPOSTした値が渡らない?

    文末は(だいぶ端折ってますが), (1) エラーがあればエラー表示, (2) エラーがなければnext.phpに飛ぶ という動作をするのですが, next.php 内に echo $_POST["Name"]; とか echo $_POST["reg"]; とか書いても valueの中身が渡ってきていません. header("Location: next.php"); で飛ばすとだめなのでしょうか. http://oshiete1.goo.ne.jp/qa2706500.html でも,#2さんのアドバイスのようにしようとしましたが, #1さんのご教示のように,セッションを利用するしかないですか? ちょっとセッションで値の渡し方がチンプンカンプンなのですが・・・ <?php session_cache_limiter('none'); session_start(); header("Cache-control:no-cache"); header("Pragma:no-cache"); $errFlg=false; if ( $_POST["reg"] == "" ) $errFlg = true; if ( !$errFlg ) { if ( $_POST["Name"] == "" ) { $errFlg = true; $errStr["Name"] = "未入力"; } } if ( $errFlg ) { ?> <html><body> <form method="post" action="<?php $_SERVER["PHP_SELF"] ?>"> <?= $errStr["Name"] ?></td> <input type="text" name="Name" value="<?php echo $_POST["Name"]; ?>"> <input type="submit" name="reg" value="登録"></td> </form> </body></html> <?php } else { header("Location: next.php"); } ?>

    • ベストアンサー
    • PHP
  • 引数の渡し方

    画面(1)と画面(2)があったとします。 画面(1)には <form aciton="2.phtml"> <input type="text" name="namae"> <input type="submit"> </form> 画面(2)(2.phtml) <? echo strlen($namae) echo mb_strlen($namae) ?> として入力された値の文字の長さを調べると絶対0になります。どこか間違っているでしょうか?

    • ベストアンサー
    • PHP
  • 入力チェックについて

    今、メールフォームを作っているのですがHTMLで入力してもらいkakunin.phpでチェックします。入力ミスがあれば、error.htmlへミスが無ければそのままkakunin.phpで表示したいのですが、中々上手くいきません。長い文で恐縮ですがよろしければご教授ください。 ★HTML★ <form name="form1" method="post" action="kakunin.php"> <td width="64">お名前</td> <td width=<input type="text" name="name"></td> </tr> </table> <input type="submit" name="Submit" value="送信"> </form> ★kakunin.php★ <?php $name=$_POST["name"] $Submit=$_POST["Submit"] //記入チェック if($Submit=="送信") { if (empty ($name)){ header("Location: error.html"); exit; } } ?>

    • ベストアンサー
    • PHP
  • header(Location:~)で$_SESSION[" "]が保持されない。

    自宅サーバー(apache2+php5+mysql5)のlocalhost環境で、 header(Lcation:~)の記述をすると、 セッションが保持されない現象が起きています。 本番環境のレンタルサーバーは、同じ記述で、 しっかりとセッションが保持されます。 この原因は、何でしょうか? php.iniの設定など、何か考えられることがあれば、 是非教えて下さい。 【やりたいこと】 ■a.php **************************************** <?php echo<<<EOD <form method="POST" action="./b.php"> <INPUT type="text" name="test"> <INPUT type="submit" name="Submit" value="確認画面へ"> </form> EOD; ?> ■b.php **************************************** <?php $_SESSION["test"]=$_POST["test"]; header("Location:./c.php"); ?> ■c.php **************************************** <?php echo $_SESSION["test"]; ?> 自宅サーバーだと、 a.phpで入れたデータが、c.phpで表示されません。 レンタルサーバーだと、 セッションが保持され、表示されます。

    • ベストアンサー
    • PHP
  • header関数について

    header関数について独自関数を絡ませたいのですがいい方法が 思いつかず悩んでおります。 パソコン用、携帯用サイトがあり携帯サイトのみheaderで飛ばした URLの最後にセッションを付加したいと思っております。 // 分岐により携帯であればセッションを変数作成しています。 $sis_id = '?' . session_name() . '=' . session_id(); // パソコンであれば$sis_idはnullなのでこの状態でもなにも付加されません。 header('Location: hoge.php' . $sis_id); ここまでは問題ないのですが以下のようにURLに他のパラメーターを 持っている場合どうすればいいでしょうか? header('Location: hoge.php?id=5' . $sis_id); これだと$sis_idの頭は?ではなく&が必要になりますよね。 仮に$sis_idの?を外して以下のように書き換えるという手も考えた のですがパソコンの場合hoge.php?id=5&のようなURLになってしまいます。 header('Location: hoge.php?id=5&' . $sis_id); if文で分岐させそれぞれの飛び先をべた書き指定すれば済む話 なのですがソースを簡略化させたく独自関数などで自動化できない ものかと思っております。 詳しい方がおりましたら是非アドバイスなど宜しくお願い致します。

    • ベストアンサー
    • PHP
  • header location が飛びません。

    お世話になります。 header location がなぜが飛びません。 お分かりになる方ご教授お願いいたします。 ・<?php の前にはスペースなどを入れておりません。 ・エラー表示にはなりませんが、飛びません。 <?php session_save_path("sess"); session_name("deri_user"); session_start(); require("class/User.class.php"); $end=null; if($_POST[submit]=="送信"){ if(session_is_registered("sesdata1")){unset($_SESSION[sesdata1]);session_register("sesdata1");} if(session_is_registered("sesdata2")){unset($_SESSION[sesdata2]);session_register("sesdata2");} $_SESSION[sesdata1]=htmlspecialchars($_POST[user_name]); $_SESSION[sesdata2]=htmlspecialchars($_POST[user_pass]); $user=new User(); $usn=$user->owner_name(); $usp=$user->owner_pass(); if(trim($usn)==trim($_SESSION[sesdata1]) and trim($usp)==trim($_SESSION[sesdata2])){ header('location:./kanri_gamen.php'); exit(); }else{ $end= "<br>ユーザー名又はパスワードが正しくありません。"; } $user->__destruct(); } ?> <html lang="ja"> <head> <title></title> </head> <body> <center> <h3>管理者ログイン画面</h3> <form action="user_login.php" method="post"> <table style="border:3px ridge #333333"> <tr> <td>名前 </td> <td> <input type="text" name="user_name" size="20"> </td> </tr> <tr> <td>パスワード </td> <td> <input type="text" name="user_pass" size="20"> </td> </tr> <tr> <td colspan="2" style="text-align:center"> <input type="submit" name="submit" value="送信"> </table> </form> <?=$end?> </center> </body> </html>

    • ベストアンサー
    • PHP
  • header関数が使えない

    <html> <head> </head> <body> <?php header("Location: http://www.php.net/"); exit; ?> </body> </html> のように、単にheader関数を試したら Warning: Cannot add header information - headers already sent by (output started at /home/***/index.php:5) in /home/***/index.php on line 6 のようなエラーがでました。header関数が使えないようなのですが、これはどこの設定を直せば解決できるのでしょうか? 普通に、phpinfo.phpは表示できるので、phpそのものは使えています。 Apache/1.3.26 PHP 4.2.2

    • ベストアンサー
    • PHP
  • PHPのheader( )関数

    PHPのheader( )で送れる文字列にはどのようなものがあるのでしょうか。 色々なサイトをあたって見たのですが、次のような構文の説明はあっても、それぞれのパラメーターにどのようなものがあるのかを網羅して説明されているものは見当たりませんでした。 header(header string, replace, http_response_code) 私は以下の2つについては使ったことがありますが、特に第1パラメーターのヘッダーストリングとして、他にどのようなものが用意されているのか、それはどんな機能を持つのかを知りたいと思います。 1:header("Location: http://www.some_site_name.com"); // ブラウザーのレダイレクション 2:header("Content-type:image/jpegf"); // 送るデータの種類 詳しく説明して頂ける方、あるいは詳しく説明されているサイトを紹介いただける方、どうかよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • パラメータが受け取れません。

    パラメータが受け取れません。 input.php と inputData.phpがあります。 input.phpには入力フォームと、登録ボタン押下時に 自画面を呼び出し、入力チェックを行っており、エラーの場合 エラーメッセージを表示、エラーではない場合、inputData.phpに 画面遷移しますが、パラメータが受け取れません。 *input.php if(empty($_POST["name"])){ $err ="えらー"; }else{ header("Location:http://localhost:8080/aaa/inputData.php"); } <form action="input.php" method="post"> <input type="text" name="name" value="aaa"> <input type="submit" name="name" value="bbb"> </form> このようなやり方はできないのでしょうか? お分かりになる方ご教授よろしくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう