アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下を「sample.php」で保存しサーバー上で実行すると
「ログアウト」ボタンを【2回押さないと】セッションが切れないですが、なぜでしょうか。
ここでつまづいて、半日これで格闘してます。

あと、
header("Location: index.php . '?' . $_SERVER['QUERY_STRING']");
みたいな書き方がエラーになりますが、うまい書き方はありませんか。

GETで「index.php?word=keweord&year=2014」
みたいなやつを飛ばす先でも引き継ぎたいという目的です。

よろしくお願い致します。

<?php

session_start();

//「ログアウト」ボタンが押されてたらセッションを破壊
if ($_POST["logout"] != "") {
session_destroy();
header("index.php");
}

//ログインパスワードが正しければだったらセッション$_SESSION["pw"]を1にしてその後に続く条件分岐に活用
if ($_POST["login"] != "") {

$mypassword = "1234";

if ($mypassword == $_POST["pwd"]) {
$_SESSION["pw"] = 1;
} else {
$logerr = "エラー";
}
}
?>

<html><body>

<form method="post" action="sample.php">
<?php if ($_SESSION["pw"] == 1 ) { ?>
<input type="text" name="pwd" value="ログイン中">
<input type="submit" name="logout" value="ログアウト">
<?php } else { ?>
<input type="password" name="pwd" value=""></td>
<input type="submit" name="login" value="ログイン"></td>
<?php }
echo $logerr;
?>
</form>

</body></html>

A 回答 (1件)

>header("index.php");



header("Location:index.php");
としたいのでしょうか?

>header("Location: index.php . '?' . $_SERVER['QUERY_STRING']");

クォーテーションがおかしいでしょ?

$qs=$_SERVER['QUERY_STRING']!==""?("?".strip_tags($_SERVER['QUERY_STRING'])):"";
header("Location:x.php{$qs}");

的な書き方の方がよいのでは?
    • good
    • 1
この回答へのお礼

yamabejpさん、いつもお世話になります。

>としたいのでしょうか?

すみません、おっしゃるとおりでした。

>的な書き方の方がよいのでは?

ご教示のコードで元質問のすべてが解決しました・・・一生かかっても思いつかないような。

今までの悩みがうそみたいに快適です、ありがとうございます。

お礼日時:2015/04/02 21:35

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