永続的なログインと通常のセッションを許可するログインフォームがあります。簡単に言うと、ユーザーが自分のアカウントにいる場合、パスワード、電子メールなどを変更できます。しかしそのためには、最初にセッションまたは Cookie からユーザー名を取得する必要があります (適切な SQL クエリを実行できるようにするため)。
私はこのコードでそうしようとします:
if(isset($_SESSION['username']))
{
$username = $_SESSION['username'];
}
else
if(isset($_COOKIE['username']))
{
$username = $_COOKIE['username'];
}
しかし、$username をエコーしようとすると、「未定義の変数」が表示され続けます。何故ですか?
session_start(); を入れると気づきました。頂点で。もちろん、セッション用の適切なユーザー名を取得しますが、Cookie 用ではありません。どうすれば解決できますか?
(私にとって)奇妙な部分は、別のページでまったく同じコード(その部分)を取得し、ユーザー名が未定義ではないことです。
PS: 不明な点がある場合、またはさらに情報が必要な場合は、お知らせください。
編集
私はこれを試しました:
function accountValidation()
{
if(isset($_SESSION['username']))
{
$username = $_SESSION['username'];
}
else if(isset($_COOKIE['username']))
{
$cookie = $_COOKIE['username'];
$explode = explode(' - ', $cookie);
$username = $explode['0'];
}
echo $username;
}
accountValidation();
そして、うまくいきました...それを関数に入れて呼び出すと、うまくいきますか?! 違いは何ですか?なぜそれが機能するために関数に入る必要があるのですか???