自分のサイトで、自分の情報を変更できるユーザーのプロファイルページを作成しています。私は、名前、姓、ユーザー名、コードなどを変更することが可能でなければなりませんが、私はユーザー名で始めました。セッションのユーザー名を使用してmysqlからデータを取得する
人がログインし、私はセッション中にユーザー名を格納します。
のindex.php
<?php
if(!isset($_SESSION['username'])) include('resources/auth/login.php');
else exit(header('Location: home.php'));
if(!isset($_SESSION)) session_start();
// Logout Session
if(isset($_GET['todo']) && $_GET['todo'] == 'logout'){
session_unset();
session_destroy();
//echo 'You have been logged out!';
}
?>
私は
profile.phpでテストを行った。
<?php
if(!isset($_SESSION)) session_start();
?>
<?php //echo $_SESSION['username'];?>
これは私のユーザ名を呼びます
しかし、mysqlデータベースからファーストネームを呼び出すには、そのユーザ名に属していますが、それにはsession[username]
を使用する必要がありますか?
<?php
$stmt = $mysqli->prepare("SELECT firstname FROM login");
$stmt->execute();
$fname = null;
$stmt->bind_result($fname);
while($stmt->fetch()) {
echo $fname;
}
$stmt->close();
$mysqli->close();
?>
これは機能しますが、データベース内のすべての最初の名前が呼び出されます。
$stmt = $mysqli->prepare("SELECT firstname FROM login WHERE u_id=$username");
と
$stmt = $mysqli->prepare("SELECT firstname FROM loginWHERE u_id = '.$_SESSION[username]'";
しかし、ここで私はエラーを取得する:だから私は、保存されたセッション変数に=デシベルでPKでU_IDを、設定しようとした 未定義の変数を:プロファイルのユーザ名.php
これは誰でも見ることができますか?
セッションを開始した後** $ _SESSION値にアクセスしようとしましたか?それは意味をなさない。 PHPは旅行に時間がかからず、session_start()を呼び出した後で遡及的にユーザー名テストを再実行しません。 'set'セッションのテストはsession_start()のための有効なテストではないことに注意してください。 $ _SESSIONをまったく持たないセッション(本当に単なるクッキー)を作ることは全く可能です。代わりに 'session_status()'を使用してください。 –
後にセッションを開始することができませんか?これは、ログインしたときに実行されている最初のスクリプトです。 – McDuck4
'session_start()'を呼び出さないと、 '$ _SESSION'は空白/空の配列になります。つまり、そこにユーザ名を見つけることはできません。 –