お世話になります。
PHPで会員サイトを作ることが多いのですが、ログインした会員は、セッション変数に会員情報を与え、ページを遷移し、会員認証はそのセッション変数に与えられた値を参照し、記事を投稿する際は、そのセッション変数にある値を記事の投稿者としてレコードに代入しています。
このような感じです。
ログイン時
<?php session_start(); //中略、DB接続語、パラメータの元に会員データを参照 //該当する会員がいたら $_SESSION["no"] = $row["no"] $_SESSION["name"] = $row["name"] //としセッション変数にセット
記事投稿ページ
<?php session_start(); if(!ctype_digit($_SESSION["no"])){ //セッション変数を確認。ログインしているか?をここで確認している。 $home_url = "https://example.com"; header("Location: $home_url"); exit; } else{ //DB接続 $no = $_SESSION["no"]; $text = $mysqli->real_escape_string($_POST["text"]); //投稿するデータとしてポストされたを検証し・・ // SQL文の作成 $query = "INSERT INTO member (id, no, name, message) VALUES (?, ?, ?, ?)"; $stmt = $mysqli->prepare($query); // パラメータを設定 $stmt->bind_param("isss", $auto_increment, $no, $name, $text); $stmt->execute(); $stmt->close(); }
といった流れでデータを登録しています。
セッション変数にあるデータが適正なものか?の検証は端折っていますが、この仕組みだと、まれにセッション変数にあるべく整数がなくなっており、整数が代入されているはずの$_SESSION["no"]に値がないのか、登録された後のデータをみると、0が登録(int型なので)されていることを見かけます。
まだまだ仲間内のサイトであるため、大きな問題にはなっていませんが、このような現象、どこに問題があるのでしょうか?
ご指導いただけると幸いです。
よろしくお願い申し上げます。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/10 12:30