2012-04-19 6 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']; 
+0

это содержится в ''? – blanksby

+0

@blanksby, Не обязательно, но ДА внутри оболочки PHP. – Starx

+0

Я заменил ' 'с' 'и до сих пор нет радости? – blanksby

1

Используйте Starx предложение на $_SESSION, но вам нужно переместить ваш session_start в первой строке PHP на странице, выше $email = $_GET['myemail']; (или $email = $_SESSION['email'])

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

ДОБАВЛЕННОЙ

Чтобы использовать переменную сеанса, объявите ее так (при условии, что вы используете метод = сообщение при отправке формы):

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

Это, конечно, небезопасно для ввода пользователем, предполагается, что вы санатизируете ввод пользователя перед его передачей со страницы на страницу и вводите его в свои запросы, это просто простой пример.

+0

У меня теперь есть ' оповещения (" Извините, но Вы должны войти в систему для просмотра области членов!) «; } ?> 'И' ', но все равно ничего. – 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'); 

    } 

На странице вы принимаете их после входа в систему:

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'); 
} 

Где вы хотите, чтобы показать имя пользователя на странице:

Logged in as <?php echo $userFName; ?>. 

или

echo "Logged in as ", $userFName, "."; 
Смежные вопросы