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

今,セッションにはまっています.
https://www.stackasterisk.jp/tech/php/php03_06.jsp
には、セッションのサンプルもいくつかあるので,まずは,簡単なセッションを使った例を拾ってきて試してみたいと思っています.ですが、上のURLにあるサンプルで

<?
session_start();
if (!isset($count)) $count=0;
session_register("count");
$count++;
?>

<html>
<body>
あなたは <?= $count ?> 回目の訪問です。
<a href="<?echo $PHP_SELF ."?PHPSESSID=". $PHPSESSID?>">カウントを増やす</a>
</body>
</html>

をしましたが,再読込やクリックをしてもカウントアップせず,ずっと1のままです.ソースが間違っているかどうかは私には,ハッキリできませんが,おそらく正しいんでしょう.正常にカウントアップされる為には,php.iniなどの設定も必要でしょうか?どうしてカウントアップされないでしょうか?

A 回答 (2件)

register_globals is enabled でないと動かないのです。


昔の変数の取り方は直接「$変数名」で取れましたが、今はデフォルトでは$_GET['変数名']やら$_POST['変数名']でないと取れないようになっています。
要は$countを$_SESSION['count']と変えてやればいいのです。

一応以下でできるはずです。


<?
session_start();
if (!isset($_SESSION['count'])) $count=0;
session_register("count");
$_SESSION['count']++;
?>

<html>
<body>
あなたは <?= $_SESSION['count'] ?> 回目の訪問です。
<a href="<?echo $PHP_SELF ."?PHPSESSID=". $PHPSESSID?>">カウントを増やす</a>
</body>
</html>
    • good
    • 0
この回答へのお礼

すばらしいご回答ありがとうございます.
動きました.ただ,よく分らなかったことがあります.
php.iniのregister_globals がoffでもonでも動くんです.また、このセッションはURL埋め込みがたなのに
URLには、ページ.php?PHPSESSID= とだけ表示され、続きにセッションIDは表示されませんでした.

お礼日時:2005/07/18 19:51

他のサイトを探した方が早いんじゃないですか?


提示されたURLを見る限り、少なくとも私にはあっているようには見えませんでした。

<?
session_start();
if (!isset($_SESSION["count"])){
$count=0;
}else{
$count=$_SESSION["count"];
}
$count++;
session_register("count", $count);
?>

参考URL:http://www.php.net/manual/ja/

この回答への補足

php.iniにおける設定で
session.save_path=/tmpとしました
そして、

<?
session_start();
if (!isset($_SESSION["count"])){
$count=0;
}else{
$count=$_SESSION["count"];
}
$count++;
session_register("count", $count);
?>

<html>
<body>
you visit <?= $count ?> times
<a href="<?echo $PHP_SELF ."?PHPSESSID=". $PHPSESSID?>">count up</a>
</body>
</html>

として試したところ
 you visit 2 times count up
と表示されましたが,それ以上は回数が増えませんでした.

補足日時:2005/07/17 21:02
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます.
ぜひ,試させていただきましたが,

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

という表示が出てしまいました.訳しますと
貴方のスクリプトは,どうしても応答しないPHP4.2.3までには、存在しない効果の為に.….となっています.私はPHP4.4.0を入れました.やはり、sessionの設定も必要でしょうか?

お礼日時:2005/07/17 20:20

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