PHPを使用してこのWebページに取り組んでいます。easyphp バージョン 5.3.9 を使用してローカルでテストしています。通常のサインイン、サインアウト機能を実行しました。ローカルでテストすると、期待どおりに動作します。しかし、FTP 経由で Godaddy ホスティング サービスにアップロードすると、おかしなことをし始めます。
- セッション変数が正しく機能していません。機能する場合と機能しない場合があります。db でのサインイン接続と検証は正常に機能しています。しかし、失敗する別のファイルからSESSION変数を読み取るときです。
どうなり得るか?phpのバージョン?しかし、単純な $_SESSION['name'] 変数を使用しているだけです。バグ?助けてください!
これは私がすでに試したことです:
- 他のブラウザの使用。
- ソースを再アップロードする (何度も)
- キャッシュ、Cookie などの消去
- 段階的にテストしていますが、私が言ったように、Webページをローカルでホストしても問題なく動作します。
重要かもしれない最後の 1 つのことは、db がサーバー (私のローカル pc ではありません) でホストされていることです。この db への接続は、両方のシナリオで正常に動作しています。
これは私のコードです:
Landing.php (xD について知りたい場合):
<div class="xxx">Log in</div>
<div class="xxx">
<form class="xxxx" method="post" action="Bean.php">
<input type="hidden" value="login" name="oper">
<input type="text" placeholder="E-mail" name="mail"/>
<input type="password" placeholder="Password" name="pass"/>
<input type="submit" value="LOG IN!" />
</form>
</div>
Bean.php
if (!isset ($_COOKIE[ini_get('name')])) {
session_set_cookie_params(0, '/');
session_name('name');
session_start();
}
if($oper=="login")
{
$user=$cws->VerifyUser($_POST['mail'],$_POST['pass']);//$cws is a class that connects to the server with the db via WS
if(strlen($user->body->mail)>5)//this is because if the user is not found it returns blank or '@.'
{
$_SESSION['session_mail']=$user->body->mail;
$_SESSION['session_name']=$user->body->name;
$_SESSION['session_miniPicture']=$user->body->miniPicture;
$_SESSION['session_on']=true;
//This are the variables I can't read later!
echo("<script type=\"text/javascript\" > location.replace(\"../home.php\");
</script>");
}
else{
echo("<script type=\"text/javascript\" >
alert(\"E-mail or password incorrect \"); location.replace(\"../landing.php\");
</script>");
}
}
home.php:
if (!isset ($_COOKIE[ini_get('name')])) {
session_set_cookie_params(0, '/');
session_name('name');
session_start();
}
//In this check, the variable $_SESSION['session_on'] is NOT set! WHY???
if(!isset($_SESSION['session_on']) || $_SESSION['session_on']==false)
{
echo("<script type=\"text/javascript\" >
location.replace(\"landing.php\");
</script>");
}
echo ( "mail: ".$_SESSION['session_mail']."<br/>"); // for debug
echo ( "name: ".$_SESSION['session_name']."<br/>"); // for debug
echo ( "on: ".$_SESSION['session_on']."<br/>"); // for debug
Welcome <?php echo $_SESSION['session_name']; ?> - <a href="signout.php">Sign out</a>
signout.php:
if (!isset ($_COOKIE[ini_get('name')])) {
session_set_cookie_params(0, '/');
session_name('name');
session_start();
}
if(isset($_SESSION['session_on']) && $_SESSION['session_on']==true)
{
$_SESSION['session_on']=false;
echo("<script type=\"text/javascript\" >
location.replace(\"landing.php\");
</script>");
}
助けてください!Godaddy サポートに連絡する必要がありますか? これはphpのバージョンに関連していますか?どうなり得るか?ありがとうございました
アレハンドロ・カサス