2012-04-18 15 views
1

私はユーザー名とパスワードを取るウェブサイトを持っています。正しく入力すると、ユーザー名セッション変数が作成されます。しかし、別のページに移動して変数が設定されているかどうかを確認すると、私はfalseになります。セッション変数が設定されていない

ここに、変数を設定するコードを示します。

$ username = $ _POST ["username"]; $ password = $ _POST ["password"];

if ($username == "right username" || $password == "rigthpassword"){ 

    session_start(); 

    $_SESSION["username"] = "aadsj2als378909382lkklja"; 
    $_SESSION["password"] = "ajklsd89798798jlk09779023"; 

} 

私は、ユーザーがログインしているかどうかを確認するPHPスクリプトを持っています。ユーザーは、それが別のページに移動されていない場合、それは1ページに移動し、その後にログインしている場合。しかし、それがログインしているユーザーが、しかし、ユーザーにログインしていない場合に行く必要があることをページに行く。

<?php session_start(); 

    if(!isset($_SESSION["username"])){ 

     header('Location:http://website.com/page1.php'); 

    } else { 

     header('Location:http://website.com/page2.php'); 

    } 

?> 

を私がログインした後、だから私は、しかし、このスクリプトを実行し、リンクをクリックしてください。私を2ページに連れて行くのではなく、1ページに行くのです。

アイデア?

+0

FYI '$ユーザ名== "正しいユーザ名" || $パスワード== "rigthpassword"です。私はあなたが '&&' not || ' –

+0

それをありがとうと思います。しかし、それは問題を引き起こしていません。 – user541597

+0

2つのページが異なるドメインにあるようです。 'website.com'と' webpage.com'です。それは単にタイプミスですか?または彼らは本当に別のドメインにいるのですか? –

答えて

0
  1. session_start();ページの機能の使用トップ(PHP 1田下後の無改行)

2 IF($ユーザ名== "rightusername" & & $パスワード== "rigthpassword"){

$_SESSION["username"] = "aadsj2als378909382lkklja"; 
$_SESSION["password"] = "ajklsd89798798jlk09779023"; 

}

変更、このようなコードは、$ユーザ名、$パスワードコンテンツ..

+1

改行を加えても何も変更されません。<?php session-start()は完全に受け入れ可能なPHPコードです。 –

+0

これはうまくいきませんでした。 – user541597

+0

これらの変数が設定された後に 'print_r($ _ SESSION)'を実行したときに戻ってくることは?あなたはそれを正しくスペルしていますか? – Phix

0

さて、これは少し明白かもしれませんが、ウィットをテストh this ...

if ($username == "right username" || $password == "rigthpassword"){ 

    session_start(); 

    $_SESSION["username"] = "aadsj2als378909382lkklja"; 
    $_SESSION["password"] = "ajklsd89798798jlk09779023"; 

} 

どのようにこれらの値を取得していますか?あなたがpostメソッドを使っていると仮定しています。それは何かの性質であるべきであることを意味する...

if ($_POST['username'] == "right username" || $_POST['password'] == "rigthpassword"){ 
session_start(); 

     $_SESSION["username"] = "aadsj2als378909382lkklja"; 
     $_SESSION["password"] = "ajklsd89798798jlk09779023"; 
    } 

私はあなたが間違って変数を送信する必要があります。ログインフォームのコードを投稿できますか?

login.htmlと

<form method="POST" action="http://mysite.com/login.php"> 
<input type="text" name="username"> 
<input type="password" name="password"> 
<input type="submit"> 
</form> 

login.php

<?php 
session_start(); 
if ($_POST['username'] == "password" && $_POST['password'] == "password") { 
$_SESSION['username'] == "aadsj2als378909382lkklja"; 
$_SESSION['password'] == "ajklsd89798798jlk09779023"; 
} 
?> 

otherpage.php

<?php 
session_start(); 
if (!isset($_SESSION['username'])){ 
header("location: http://website.com/page1.php"); 
} else { 
header("location: http://website.com/page1.php"); 
} 
?> 
+0

ログインは正しく機能します。それは問題ではありません。 – user541597

+0

あなたのコードに基づいてうまくいくはずです。だから私の唯一の仮定は、変数が正しく送信されていないことが何らかの理由であるということです。これが当てはまらない場合は、投稿していないものが問題の原因となっていると思います。 – Ian

+0

最後のセッションを続行するのではなく、session_start()を実行すると、異なるセッションが作成されていることがわかりました。 – user541597

関連する問題