Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Авторизация
 
 автор: lemuriec   (28.12.2011 в 16:31)   письмо автору
 
 

Заранее благодарю за форум. Надеюсь правда что тут помогают а не натации читают. Работаю в дримвивере. Сделал страницу авторизации. Хочу чтоб после авторизации когда переходишь на главную страницу вылезало приветствие "Добро пожаловать , имя_пользователя" . Сделал рекордсет. Но когда Захожу выдает только Имя Админа, а на остальных остается тоже имя. То есть когда захожу Админом пишет "Добро пожаловать, Админ", и когда под юзером тоже самое. Делал так
Добро пожаловать, {Recordset1(точка)Orgname}
. Что не так?

  Ответить  
 
 автор: deimand   (28.12.2011 в 20:05)   письмо автору
 
   для: lemuriec   (28.12.2011 в 16:31)
 

Чтобы "вылезало" приветствие, после авторизации имя пользователя должно быть доступно в какой нибудь переменной, чтобы его можно было показать. Обычно для этого используют сессии. И на всех страницах выводят значение сессионной переменной, которая содержит имя пользователя. В вашем повествовании о сессиях нет ни слова.

  Ответить  
 
 автор: cheops   (28.12.2011 в 20:32)   письмо автору
 
   для: lemuriec   (28.12.2011 в 16:31)
 

>Сделал рекордсет.
Можно тут подробнее, это JavaScript?

  Ответить  
 
 автор: lemuriec   (29.12.2011 в 10:07)   письмо автору
 
   для: cheops   (28.12.2011 в 20:32)
 

Нет. Это php+sql. В дримвивере сессии создаются автоматически. Теперь подробнее. Вот в чем дело. Есть таблица (создал в phpmyadmin) называется logintable. В ней поля id, login, pass, privelegy, userrealname, При регистрации пользователь указывает логин, пароль и реал имя пользователя(то есть то как его приветствовать). Есть форма входа (стандартная логин, ппароль). Допустим зарегалось 2 пользователя. Первый - Логин: логин1; пароль:пароль1; Имя: имя1. Второй - Логин: логин2; паролль: пароль2; имя: имя2. Так вот как сделать чтоб когда заходил Логин 1 выдавалось приветствие: Добро пожаловать, Имя1. А когда входит Логин2: Добро пожаловать, Имя2. Так как передать в сессии это значение силами дримвивера если в форме входа нет такого поля а в базе данных logintable оно есть?) Я новичок - всего 2 месяца изучаю программирование (самоучка((( ). Заранее спасибо

  Ответить  
 
 автор: deimand   (29.12.2011 в 10:40)   письмо автору
 
   для: lemuriec   (29.12.2011 в 10:07)
 

Для того чтобы "запомнить" логин авторизованного пользователя, его нужно поместить в сессии.

Делается это так

<?php
 
// запуск сессионного механизма
 
session_start();
 
// сохранение некоторого значения в сессионной переменной username 
 
$_SESSION['username'] = 'Логин1';


Чтобы на всех "остальных" страницах видеть Добро пожаловать, Логин1, нужно чтобы каждая из этих страниц содержала нижеприведенный код

<?php
 
// запуск сессионного механизма
 
session_start();
 
// формирование приветствия
 
if (isset($_SESSION['username'])) echo 'Добро пожаловать, ' $_SESSION['username'];
 else echo 
'Авторизуйтесь и зарегистрируйтесь';


Добавлю еще, что функция session_start(); должна объявляться до какого либо вывода текста в браузер, желательно в самом начале скрипта, иначе будет ошибка.

  Ответить  
 
 автор: lemuriec   (29.12.2011 в 10:56)   письмо автору
 
   для: deimand   (29.12.2011 в 10:40)
 

Вы не правильно поняли)))
Есть 3 файла + база данных, назовем ее логин.
База данных содержит графы. id, логин, пароль, привелегия, Имя пользователя.
файл "регистрация.php" содержит форму с полями логин, пароль, имя пользователя.
файл "вход.php" содержит форму с полями логин и пароль (то есть при входе имя пользователя не вводиться!!).
файл "Главная.php" должен содержать приветствие "Здравствуй, {имя пользователя}". (не логин а имя пользователя).
Моя логика говорит следующее: когда форма со страницы вход.php посылается на сервер из таблицы логин должно браться значение в графе "Имя пользователя" И вставляться в страницу "Главная.php" там где приветствие: "Здравствуй, {имя пользователя из таблицы логин в графе имя пользователя}".

Как это сделать?

  Ответить  
 
 автор: deimand   (29.12.2011 в 11:09)   письмо автору
 
   для: lemuriec   (29.12.2011 в 10:56)
 

Хорошо. Пойдем в обход.

Откуда в файле "Главная.php" должно взяться имя пользователя?
Как "Главная.php" определяет, что пользователь авторизован(зарегистрирован) или нет?

  Ответить  
 
 автор: lemuriec   (29.12.2011 в 11:17)   письмо автору
 
   для: deimand   (29.12.2011 в 11:09)
 

ммм...ок. Вы в Дримвивере работаете?

  Ответить  
 
 автор: deimand   (29.12.2011 в 11:20)   письмо автору
 
   для: lemuriec   (29.12.2011 в 11:17)
 

Нет, к сожалению у меня не установлена такая программа.

Меня интересует теория. Как вы думаете?

  Ответить  
 
 автор: lemuriec   (29.12.2011 в 11:21)   письмо автору
 
   для: lemuriec   (29.12.2011 в 11:17)
 

вот файл логин.php
<?php require_once('Connections/MON.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

mysql_select_db($database_MON$MON);
$query_Recordset1 "SELECT log_name, log_pass, Privelegy, Org_name FROM login_table";
$Recordset1 mysql_query($query_Recordset1$MON) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);
?>
<?php
// *** 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['login'])) {
  
$loginUsername=$_POST['login'];
  
$password=$_POST['password'];
  
$MM_fldUserAuthorization "Privelegy";
  
$MM_redirectLoginSuccess "Main.php";
  
$MM_redirectLoginFailed "LOGin.php";
  
$MM_redirecttoReferrer true;
  
mysql_select_db($database_MON$MON);
      
  
$LoginRS__query=sprintf("SELECT log_name, log_pass, Privelegy FROM login_table WHERE log_name=%s AND log_pass=%s",
  
GetSQLValueString($loginUsername"text"), GetSQLValueString($password"text")); 
   
  
$LoginRS mysql_query($LoginRS__query$MON) or die(mysql_error());
  
$loginFoundUser mysql_num_rows($LoginRS);
  if (
$loginFoundUser) {
    
    
$loginStrGroup  mysql_result($LoginRS,0,'Privelegy');
    
    if (
PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    
//declare two session variables and assign them
    
$_SESSION['MM_Username'] = $loginUsername;
    
$_SESSION['MM_UserGroup'] = $loginStrGroup;          

    if (isset(
$_SESSION['PrevUrl']) && true) {
      
$MM_redirectLoginSuccess $_SESSION['PrevUrl'];    
    }
    
header("Location: " $MM_redirectLoginSuccess );
  }
  else {
    
header("Location: "$MM_redirectLoginFailed );
  }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
<script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
</head>

<body>
<a href="Red.php">Регистрация</a>
<form ACTION="<?php echo $loginFormAction?>" id="form1" name="form1" method="POST">
  <div align="center">
    <table width="200" border="1">
      <tr>
        <th scope="row">Логин</th>
        <td><label for="login"></label>
          <span id="sprylogin">
          <input type="text" name="login" id="login" />
        <span class="textfieldRequiredMsg">Значение является обязательным.</span></span></td>
      </tr>
      <tr>
        <th scope="row">Пароль</th>
        <td><label for="sprypassword"></label>
          <label for="password2"></label>
          <span id="sprytextfield2">
          <input type="password" name="password" id="password2" />
          <span class="textfieldRequiredMsg">Значение является обязательным.</span></span></td>
      </tr>
    </table> 
  </div>
  <p align="center">
    <input type="submit" name="submit" id="submit" value="Отправить" />
  </p>
</form>
<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprylogin", "none", {validateOn:["change"]});
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2");
</script>
</body>
</html>
<?php
mysql_free_result
($Recordset1);
?>

  Ответить  
 
 автор: lemuriec   (29.12.2011 в 11:23)   письмо автору
 
   для: lemuriec   (29.12.2011 в 11:21)
 

а это то через что он соединяется

<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_MON "host";
$database_MON "mon";
$username_MON "root";
$password_MON "root";
$MON mysql_pconnect($hostname_MON$username_MON$password_MON) or trigger_error(mysql_error(),E_USER_ERROR); 
?>

  Ответить  
 
 автор: deimand   (29.12.2011 в 11:31)   письмо автору
 
   для: lemuriec   (29.12.2011 в 11:21)
 

Ну вот в Вашем коде создаются две переменные сессии.

<?php
    $_SESSION
['MM_Username'] = $loginUsername;
    
$_SESSION['MM_UserGroup'] = $loginStrGroup;       


Теперь если Вы напишете на главной странице
<?php
 
if (isset($_SESSION['MM_Username'])) echo 'Добро пожаловать, ' $_SESSION['MM_Username'];
 else echo 
'Авторизуйтесь и зарегистрируйтесь'

то получите требуемое приветствие, только не имя пользователя, а его логин правильно?

  Ответить  
 
 автор: lemuriec   (29.12.2011 в 11:33)   письмо автору
 
   для: deimand   (29.12.2011 в 11:31)
 

Да правильно) а как передать Orgname теперь)

  Ответить  
 
 автор: deimand   (29.12.2011 в 11:40)   письмо автору
 
   для: lemuriec   (29.12.2011 в 11:33)
 

Изменить запрос
<?php
$LoginRS__query
=sprintf("SELECT log_name, log_pass, Privelegy FROM login_table WHERE log_name=%s AND log_pass=%s",
  
GetSQLValueString($loginUsername"text"), GetSQLValueString($password"text"));

Чтобы он доставал из базы и требуемое Orgname

Вероятно как-то так
<?php 
$LoginRS__query
=sprintf("SELECT  log_name, log_pass, Privelegy, Orgname FROM login_table WHERE log_name=%s AND log_pass=%s",
  
GetSQLValueString($loginUsername"text"), GetSQLValueString($password"text"));


Потом как-то так получить его в переменную
<?php 
$loginStrOrgname  
mysql_result($LoginRS,0,'Orgname');


Потом как-то так сохранить в сессию
<?php 
$_SESSION
['MM_Orgname'] = $loginStrOrgname


А потом как-то так вывести на страницу
<?php
 
if (isset($_SESSION['MM_Orgname'])) echo 'Добро пожаловать, ' $_SESSION['MM_Orgname'];
 else echo 
'Авторизуйтесь и зарегистрируйтесь'

  Ответить  
 
 автор: lemuriec   (29.12.2011 в 11:58)   письмо автору
 
   для: deimand   (29.12.2011 в 11:40)
 

Потом как-то Вам огромное спасибо!!!))))) Помогло))))) Так... буду активно участвовать в деятельности Вашего сайта))) это единственный сайт помоему где реально помогают... Я понимаю в принципе я должен был сам это догнать, но я только учусь))) Еще раз спасибо и ++++++++ Этому сайту и Вам лично)

  Ответить  
 
 автор: deimand   (29.12.2011 в 12:08)   письмо автору
 
   для: lemuriec   (29.12.2011 в 11:58)
 

Это не мой сайт, я такой же пользователь как и Вы.

  Ответить  
 
 автор: lemuriec   (29.12.2011 в 12:12)   письмо автору
 
   для: deimand   (29.12.2011 в 12:08)
 

Не важно, все равно спасибо) Еще хотел спросить. А возможно ли php и sql использовать в связке с Flash ?

  Ответить  
 
 автор: deimand   (29.12.2011 в 12:46)   письмо автору
 
   для: lemuriec   (29.12.2011 в 12:12)
 

Да, например в помощью javascript можно передавать в swf-аудиопроигрыватель информацию о треках пользователя, полученную с помощью php из mysql и сделать из этого mp3 плеер на html и css, с собственными скинами и плейлистом, вообще без знания Flash. Только кто-то со знанием Flash этот swf все равно должен сделать.

  Ответить  
 
 автор: lemuriec   (08.01.2012 в 13:56)   письмо автору
 
   для: deimand   (29.12.2011 в 12:46)
 

Я флэш более менее сносно знаю - но мне плеер не нужен. Мне нужно следующее: программа с БД но чтоб оболочка была Flashная. Это реально сделать? И если можете - то подскажите - учебники или туторы плиз, или сами подскажите)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования