入門本を見ながら次のような仕様にしたいのですが、うまくいきません。
・a.phpでsubmitボタンを押すと、b.phpへ飛ぶ
・その際、a.phpで$ataiに格納された値も一緒にb.php持っていって利用したい。
下記のどこを直せばうまくいくようになりますか?(下記の仕様ではsubmitボタンを押しても何も動作しません)。
----a.phpの中身----
<?php
//ボタンををクリックしたら、b.phpを表示
if( $post_mode == 'b.phpへ飛ぶ'){
header("Location: b.php");
exit;
}
$atai = x
//値とsubmitボタンを表示
echo $atai;
echo "<INPUT TYPE=\"submit\" NAME=\"post_mode\" VALUE=\"'b.phpへ飛ぶ\">";
?>
日本語を変数に使うことはあまりお勧めしませんが、それはさておき POST されたものを変数に展開するには、
extract($_POST);
とします。これを実行すれば $post_mode に内容が展開されます。
あるいは、
$_POST['post_mode'];
として参照するかです。
いずれにせよ、変数が必ずあるとは限らないので、参照する際は
if ( isset( $post_mode ) ) { if ( strcmp( $post_mode, "b.phpへ飛ぶ" ) == 0 ) { ... } }
のようにした方が良いでしょう。
蛇足ですが、
$atai = x // $x では? //値とsubmitボタンを表示 echo $atai; echo "<INPUT TYPE=\"submit\" NAME=\"post_mode\" VALUE=\"<span style="color:#FF0000;font-weight:bold;">'</span>b.phpへ飛ぶ\">";
などは良いですか?
とりあえずその本を最後まで読んでください。
といいたいところですが、親切に答えましょう。
答えは、フォームの送信先としてb.phpを指定し、b.phpのスーパーグローバル連想配列$_POSTから値を受け取ることです。
というわけで回答は、
?>
<form name="form_to_b" action="b.php" method="post">
<input type="hidden" name="atai" value=">?echo $atai?<" />
<input type="submit" value="送信" />
</form>
<?
となります。
b.phpでは、
$atai = $_POST['atai'];
としてください。
こんなんはどうでしょう?
a.php
$value = "b.phpに渡したい値"; echo' <form action="b.php" method="post"> <input type="hidden" name="value" value="'.$value.'"> <input type="submit" value="b.phpへいくなり"> </form> ';
b.php
$get = $_POST['value']; echo ' ここはb.phpです。値:'.$get.'を受け取りました! ';
間違っていたらごめんなさい。
かなりおかしなコードですぞいw
普通はこんな感じ
a.php
<?php $atai = "x"; echo $atai; echo "<form action=\"b.php\" method=\"post\">"; echo "<input type=\"hidden\" name=\"post_mode\" value=\"" . $atai . "\" />"; echo "<input type=\"submit\" value=\"b.phpへ飛ぶ\" />"; echo "</form>"; ?>
b.php
<?php echo $_POST["post_mode"]; ?>
スクリプト間で変数を受け渡す方法は上で書かれているような
POST時にhiddenで渡すorGETのパラメータとして渡すというのが一般的ですが、
変数をユーザの目に触れさせたくない場合などはセッションを使う事も出来ます。
a.php
if( $post_mode == 'b.phpへ飛ぶ'){ header("Location: b.php"); exit; } session_start(); $_SESSION['atai'] = 'x'; // atai ~~
b.php
session_start(); echo $_SESSION['atai']; // atai
コメント(1件)
a.phpを表示したら、submitボタンを押すのではなく『ソースの表示(Internetexprorerなら表示→ソース)』を行ってみてください。
その『ソース』に答えはあります。
念のため聞いておきますが、PHPは初心者ということですがHTMLの基礎的なもの(今回であればHTMLフォーム)はご存知ですよね?