2012-04-19 10 views
0

にログインした際に、オンラインユーザーを表示する:としてログイン :_ __ _ ___私が表示したい、彼らは

コードを、これまで:

ログインチェック、

<?php 
include('config.php'); 

// username and password sent from form 
$myemail=$_POST['myemail']; 
$mypassword=$_POST['mypassword']; 

// To protect MySQL injection 
$myemail = stripslashes($myemail); 
$mypassword = stripslashes($mypassword); 
$myemail = mysql_real_escape_string($myemail); 
$mypassword = mysql_real_escape_string($mypassword); 

$sql="SELECT * FROM $tbl_name WHERE email='$myemail' and password='$mypassword'"; 
$result=mysql_query($sql); 

// Mysql_num_row is counting table row 
$count=mysql_num_rows($result); 

if($count==1){ 
session_start(); 
$_SESSION['myemail'] = $myemail; 
header("Location: http://www.jblanksby.yourwebsolution.net/login_success.php?   user=$myemail"); } 
else 
{ header("Location: http://www.jblanksby.yourwebsolution.net/loginerror.php"); 
} 
?> 

ログイン成功ページ/最初のメンバーページで、

<? 
$email = $_GET['myemail']; 
session_start(); 
$_SESSION['myemail'] = $email; 

if(isset($_SESSION['email'])){ 
} else { 
echo " 
<script language='javascript'> 
alert('Sorry, but you must login to view the members area!') 
</script> 
<script> 
window.location='http://jblanksby.yourwebsolution.net/sign_in.php' 
</script> 
"; } 
?> 

<html> 
blah blah blah 
</html> 

ユーザーの電子メールを表示するために使用されるコードは、

Logged in as: <? echo "$email"; ?> 

物事の側のログは完璧です。ユーザーの電子メールを表示するだけでは難しいことが分かります。何を私は間違っていたか逃したのですか?

+1

あなたのコメント「// MySQLインジェクションを保護する」は誤解を招くような場所にあります。 'stripslashes'はSQLインジェクションを防ぐ**ではありません**。 magic_quotes_gpcがオンになっていて、それをオフにする権限がないときに使用する必要があります。 –

+1

PHP –

答えて

1

セッションから値を表示しようとしているので、$_SESSION['email']を使用する必要があります。

session_start(); // Or, if you have done it ahead, then omit this 
echo "Logged in as:".$_SESSION['email']; 
$_SESSION
+0

に行ったことはこれが ''に含まれていますか? – blanksby

+0

@blanksby、PHPラッパーの中では必要ありません。 – Starx

+0

私は '<? echo "$ email"; ?>と '<?php echo"とログインしました: "。$ _ SESSION ['email']; ?>そしてまだ喜びはない? – blanksby

1

使用Starxの提案が、あなたが移動する必要があり、あなたのsession_start

を追加しました

<?php 
session_start(); 
$email = $_SESSION['email']; 
?> 

$email = $_GET['myemail'];(または$email = $_SESSION['email'])上記のページでPHPの最初の行として、セッション変数を使用するには、次のように宣言します(フォーム送信時にメソッド=投稿を使用していると仮定します)。

<?php 
session_start(); 
$_SESSION['email'] = $_POST['email']; 
?> 

もちろんこれはユーザーの入力には安全ではありませんが、ページ間を渡す前にユーザー入力をサニタイズしてクエリに注入すると仮定していますが、これは単なる例に過ぎません。

+0

私は今 '<?php session_start();を持っています。 $ email = $ _GET ['myemail']; $ _SESSION ['email'] = $ email; 場合(ISSET($ _ SESSION [ 'メール'])){ }他{ エコー「<スクリプト言語= 'javascriptの'> 警告( '申し訳ありませんが、あなたはメンバーエリアを閲覧するにはログインする必要があります!') "; } ?> 'と' <?php echo "としてログイン:"。$ _ SESSION ['email']; ?> 'しかし、まだ何も。 – blanksby

+0

電子メールをセッション変数に保存しましたか? '$ _SESSION ['email'] = myemail @ email.com'のページロード/リフレッシュ時に割り当てる必要がありますが、フォーム内のメールを取得していますが、その変数に割り当てる必要があります。あなたがセッションを開始したために自動的に入力されたことを確認してください –

+0

そして、あなたのすべてのページでコードの最初の行に 'session_start()'があることを確認してください。それはページからページに壊れるでしょう –

0

ログインスクリプト:

$username = $_POST['username']; 
$password = $_POST['password']; 
$password = sha1($password); 

if ($username&&$password) { 
     require_once('../db/nstDBconnector.php'); 
     $qr = "SELECT * FROM `users` WHERE `username` = '$username'"; 
     $query = mysql_query($qr); 
     $numrows = mysql_num_rows($query); 

     if ($numrows!=0) { 
      // check password against the password in the database 
      while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) { 
       $storedUsername = $row['username']; 
       $storedPassword = $row['password']; 
       $storedUserType = $row['user_type']; 
       $storedUserFName = $row['full_name']; 
       $_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR']; 
      } 
      // check to see if username and password match 
      if ($username==$storedUsername&&$password==$storedPassword) { 
       ob_start(); 
       session_start(); 
       $_SESSION['username'] = $storedUsername; 
       $_SESSION['user_type'] = $storedUserType; 
       $_SESSION['full_name'] = $storedUserFName; 
       header ('Location: main.php?login=successful'); 
      } else { 
       header ('Location: index.php?error=incorrectPassword'); 
      } 
     } else { 
      header ('Location: index.php?error=noUser'); 
     } 
    } else { 
     header ('Location: index.php?error=missingUserAndPass'); 

    } 

ページログイン後にそれらを取っている:

Logged in as <?php echo $userFName; ?>. 
:あなたはページ上のユーザー名を表示したい

if ($_SESSION['username']) { 
    $userLogged = $_SESSION['username']; 
    $userType = $_SESSION['user_type']; 
    $userFName = $_SESSION['full_name']; 
} else { 
    header ('Location: http://www.yourdomain.com/index.php?error=notLoggedIn'); 
} 

または

echo "Logged in as ", $userFName, "."; 
関連する問題