プロが教える店舗&オフィスのセキュリティ対策術

クリアボタンを押すことによって、あるセッション変数(ここでは$player1num[0~15]という風に配列を使っており、テキストボックスに数値を入力後submitボタンを押すことによりその数字をこの変数に格納して表示してます)を破棄したいです。

PHP内でechoを使って表示された後、クリアボタンを押すことで$player1num[0~15]を破棄したいのですが、どんなプログラミングをすれば良いのでしょうか?

JavaScript内で$player1num=array();として、onClickでそれを呼んで破棄しようとしたのですがうまくいきません。

セッションの使い方をちゃんと分かっていない初心者ですが、どうかよろしくお願いします。

A 回答 (4件)

テキストボックスを送信するためのsubmitボタンは、



<form action="input.php" method="post">
<input type="text" name="answer" value="" /><input type="submit" name="answer_button" value="送信" />
</form>

のようなものを作成されているのでしょうか。
formの仕様上、複数のsubmitボタンが存在していて、いづれかが押下され、フォーム送信が行われた場合、
押下されたsubmitボタンの変数のみが渡されます。

ソレを利用して、

<form action="input.php" method="post">
<input type="text" name="answer" value="" />
<input type="submit" name="answer_button" value="答える" /> <input type="submit" name="clear_button" value="ログ削除" />
</form>

というようにフォームを設置して、送信先のプログラムに、

<?php

if(isset($_POST['answer_button'])){

//名前:answer_buttonが押下されていた場合に回答の成否を確認する処理


}elseif(isset($_POST['clear_button'])){

//名前:clear_buttonが押下されていた場合にログの削除を実行する

}

?>

というような振り分け処理を行えば良いのではないでしょうか。

この回答への補足

回答ありがとうございます。
この回答を参考に変えてみました。
私は今プレイヤー2人で対戦する数当てゲーム(ここでは、トップ画面にてプレイヤー2人の名前とそれぞれの秘密の数字を設定し、プレイ画面でもそれらを表示し続ける。下にある$player1numはプレイ画面でのプレイヤー1の入力値を格納する変数で、0~14の配列を使っています)を作っているのですが、プログラムの最後の方で
  <input type="submit" name="clear" value="クリア">
if(isset($_POST['clear'])){
$player1num=array();
}
としてみたのですが、何も反応しませんでした。
そこで試しに$player1num=array(); を $_SESSION=array();に変えてみると、
クリアボタンを2回連続押すことで両プレイヤー名・秘密の数字・プレイ画面での入力値が消えました。
さらに$player1num=array(); を session_destroy();に変えてみると、
当然ですが、クリアボタンを1回押すと上の3種類のセッションが消えました。

私はプレイ画面での入力値だけを消したいのですがどうも上手くいきません。
$_SESSION=array();では、3種類のセッションが消えてしまうのは分かりますが、
2回連続押さないと消えないのはよく分かりません。

度々すみませんが、もう一度これについて回答頂けないでしょうか?

補足日時:2013/09/05 01:37
    • good
    • 0

$player1num


は、どのように吐き出した変数なのでしょうか。

ゲーム自体は、いわゆるヒットアンドエラーというものと思うのですが、
hitosashiさんがどのように設計されているかによるんですが、

セッション変数にある、一部の内容のみ削除されるのであれば、

$_SESSION['player1num'] = array();
と、削除したいキーのみ空にすれば良いのではないでしょうか。
    • good
    • 0
この回答へのお礼

なんとか入力値だけを初期化出来るようになりました。
その後1から入力し直すことも出来ました。
ありがとうございます(^^)
相変わらずクリアボタンを2回押さないと初期化出来ませんが(- -||)

お礼日時:2013/09/06 00:57

セッション変数を全て消したいだけであればsession_startした後



$_SESSION = array();

でOK。
ログインなどが絡む場面でセキュリティ上、セッションクッキー自体を削除したい場合はもうちょっと複雑。
http://d.hatena.ne.jp/Kappuccino/20080726/121704 …

JavaScriptの動作だけでPHP上の変数を削除するのはajax等を使わない限り不可能です。
ページ遷移が基本的に必要です。

この回答への補足

またまた回答ありがとうございます。
なんとか入力値のみの破棄(初期化?)は出来るようになったのですが、
なぜかクリアボタンを2回押さないと入力値の破棄ができません。

理由としてはどんなことが考えられるでしょうか?
すみませんが、回答を頂ければ幸いですm(__)m

補足日時:2013/09/06 01:01
    • good
    • 0

僕の理解力がないためか、なんの質問かよくわかりません。




ボタンをクリック後ページ遷移無しにセッションをクリアしたい

ということですか?

この回答への補足

すいません、セッションをもう少し理解できていれば説明しやすいんですがm(__)m
例えば、「1234」、「5678」、「9012」と入力した後、プレイ画面ではセッションにより
1234
5678
9012
と表示される様にしているのですが、これをボタンを押すことによって
この3つの数字全てを消すようにしたいということです。
で、その後また再入力できるようにもしたいです。

分かりにくいですが、よろしくお願いします。

補足日時:2013/09/04 22:26
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!