PHP: Система входа в систему пользователя / Проверьте, есть ли у пользователя доступ к странице - PullRequest
0 голосов
/ 07 июня 2009

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

Я никогда не работал с $ _SESSION, поэтому, когда мне нужна система входа, я использую Dreamweaver, чтобы сделать ее для меня.

У меня есть страница, где он спрашивает имя пользователя и пароль. И если вход успешный, то он переходит на другую страницу. Еще это сказано на странице входа в систему.

Проблема в том, что Логин, система, которая когда-то работала, теперь не работает. Потому что он остается на странице входа. И я сделал "echo $ _SESSION ['MM_Username'];"

И ничего не вернулось. Поэтому я думаю, что это означает, что я не создаю куки для доступа ??

Правильно? Я думаю, что эхо в сеансе что-то отображает.

Ну, можно мне помочь, ребята? Может быть, простая система входа в систему. Не вход в Dreamweaver.

Я опубликую код входа пользователя на странице входа в систему.

// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['username'])) {
  $loginUsername=$_POST['username'];
  $password=$_POST['passe'];
  $MM_fldUserAuthorization = "power";
  $MM_redirectLoginSuccess = WWW."/administrador";
  $MM_redirectLoginFailed = WWW."/login";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_dbconnect, $dbconnect);

  $LoginRS__query=sprintf("SELECT username, passwd, power FROM `user` WHERE username=%s AND passwd=%s",
  GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

  $LoginRS = mysql_query($LoginRS__query, $dbconnect) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {

    $loginStrGroup  = mysql_result($LoginRS,0,'power');

    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;       

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];  
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}

Я работал. это изменения, которые вы видите там, в $ MM_redirectLoginSuccess и $ MM_redirectLoginFailed, и ничего не изменилось в базе данных.

Если это немного устало. Просто опубликуйте простой код пользователя, я нашел некоторые, но не очень хорошие. Что я делаю все остальное.

Вы знаете, что это странно? Это сработало. Я сохранил, потом выключил компьютер, потом, когда вернулся, не работал.

Еще раз спасибо.

Ответы [ 2 ]

2 голосов
/ 07 июня 2009

Я так понимаю, ваша база данных запущена?

В противном случае просто начните проходить код, когда при отладке переменных попробуйте использовать var_dump ($ var), чтобы вы увидели тип (особенно если он нулевой) отлаживаемой переменной.

$ LoginRS__query - повторить это и посмотреть, какой запрос генерируется. Запустите это через свою базу данных и посмотрите, что получится.

header ("Location:". $ MM_redirectLoginSuccess); - Имейте в виду, что если какие-либо данные были отправлены (переменные отражены и т. Д.), Это не сможет перенаправить пользователя, поскольку заголовки уже были отправлены.

0 голосов
/ 07 июня 2009

Спасибо за помощь. Это какой-то конфликт, не знаю, какой именно, у меня не было на это времени, я должен был заставить его работать быстро.

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

Я удалил эту часть и получилось хорошо.

// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['username'])) {
  $loginUsername=$_POST['username'];
  $password=$_POST['passe'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = WWW."/administrador";
  $MM_redirectLoginFailed = WWW."/login";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_conn, $dbconnect);

  $LoginRS__query=sprintf("SELECT username, passwd FROM `user` WHERE username=%s AND passwd=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

  $LoginRS = mysql_query($LoginRS__query, $dbconnect) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";

    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;       

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];  
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}

Теперь я должен сам проверять систему проверки питания, но это не будет проблемой.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...