ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

I Love PHPコミュのリロード対策

  • mixiチェック
  • このエントリーをはてなブックマークに追加
リロード対策って頻繁に使われると思うんですけど、一般的な方法としては、セッションなどが上げられるのでしょうか。

管理人である私もつい最近PHPを使い始めたので、いまいち分からないことがあるのですが、とりあえずこんな感じで作って見ました。

入力側
<?php
session_start();

if (!isset($execute)) $execute = false;
session_register("execute");
?>

受け取り側
<?php
session_start();

// セッション変数に"execute"が登録されている、かつ、executeがfalseの場合
if (isset($execute) && $_SESSION['execute'] == false) {
// メール送信等

// セッション変数の破棄
session_unregister("execute");
}
?>

受け取り側の$_SESSION['execute'] == falseはこのソースでは意味がないですね。何か他に処理を加えてtrueにする必要がある場合などに効果があると思いますが。

コメント(3)

リロード対策の基本は

header("Location: 〜");

です。

------例-----

if (!入力チェック等) {
//FALSEページにジャンプ
header("Location: ××.php");
exit;
} else {
//TRUEページにジャンプ
header("Location: ○○.php");
exit;
}
  
>>KASYSさん

それだと、TRUEページでリロードされた場合同様の対策が必要になりませんか?
>>KBさん

例は、かなり省略して書いたので、もう少し書き加えますね。
$_REQUEST["number"]が1桁の整数の場合MySQLに登録するスクリプトです。

-----例(その2)-----
<?php

function checkNumber($i)
{
 if (empty($i)) {
  return false;
 } elseif (!preg_match("/^\d{1}$/", $i)) {
  return false;
 } else {
  return true;
 }
}

$number = mysql_real_escape_string($_REQUEST["number"]);

if (!checkNumber($number)) {
 //FALSEページにジャンプ
 header("Location: ××.php");
 exit;
} else {
 $sql = "INSERT INTO tbl(number) VALUES('$number')";
 mysql_query($sql);
 //TRUEページにジャンプ
 header("Location: ○○.php");
 exit;
}

-----

まだかなり割愛してますが、動作イメージを把握してもらえればと思います。

上記のようであれば、TRUEページでリロードされても問題ありません。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

I Love PHP 更新情報

I Love PHPのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング