Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Название темы включает слова - "Помогите", "Спасите", "Срочно"
Название темы не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте >>>правила <<< и заново правильно создайте тему.
 
Опции темы
Старый 30.04.2010, 07:55   #1
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
Репутация: 12
По умолчанию Регистрация пользователей

Извиняюсь за создание тему, проблема решена!

Последний раз редактировалось cheef; 30.04.2010 в 07:59.
cheef вне форума  
Старый 30.04.2010, 09:21   #2
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
Репутация: 12
По умолчанию

PHP код:
Дабы не плодить темы :
<?php 
include ("blocks/bd.php");/*Соединяемся с базой данных*/
if (isset($_POST['nick']))       {$nick $_POST['nick'];}
if (isset(
$_POST['pass']))       {$pass $_POST['pass'];}


if (isset(
$_GET['nick'])) {$nick $_GET['nick'];}
if (isset(
$_GET['pass'])) {$pass $_GET['pass'];}
$result mysql_query("SELECT titel,meta_d,meta_k,text FROM settings WHERE page='index'",$db);
$myrow mysql_fetch_array($result);
?>
<meta name="description" content="<?php echo $myrow['meta_d']; ?>">
<meta name="keywords" content="<?php echo $myrow['meta_k']; ?>">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?php echo $myrow['titel']; ?></title>
   <?php 
              
             
    session_start
();//  вся процедура работает на сессиях. Именно в ней хранятся данные  пользователя, пока он находится на сайте. Очень важно запустить их в  самом начале странички!!!
if (isset($_POST['nick'])) { $login $_POST['nick']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
    
if (isset($_POST['pass'])) { $password=$_POST['pass']; if ($password =='') { unset($password);} }
    
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
    
{
    exit (
"Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
    }
    
//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
    
$login stripslashes($login);
    
$login htmlspecialchars($login);
$password stripslashes($password);
    
$password htmlspecialchars($password);
//удаляем лишние пробелы
    
$login trim($login);
    
$password trim($password);
// подключаемся к базе
  // файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь 
 
$result2 mysql_query("SELECT * FROM users WHERE nick='$login'",$db); //извлекаем из базы все данные о пользователе с введенным логином
    
$myrow2 mysql_fetch_array($result2);
    if (empty(
$myrow2['pass']))
    {
    
//если пользователя с введенным логином не существует
    
exit ("Извините, введённый вами login или пароль неверный.");
    }
    else {
    
//если существует, то сверяем пароли
    
if ($myrow2['pass']==$password) {
    
//если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
    
$_SESSION['nick']=$myrow2['nick']; 
    
$_SESSION['id']=$myrow2['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
    
echo "Вы успешно вошли на сайт! <a href='index.php'>Главная страница</a>";
    }
 else {
    
//если пароли не сошлись

    
exit ("Извините, введённый вами login или пароль неверный.");
    }
    }
   
?>
Сессия начинается всё хорошо но выскакивает предупреждение:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\localhost\www\12\login.php: 16) in Z:\home\localhost\www\12\login.php on line 44
Как избавится от него?
cheef вне форума  
Старый 30.04.2010, 11:11   #3
ssdm
Участник клуба
 
Регистрация: 20.05.2009
Адрес: СПб
Сообщений: 506
Репутация: 90

icq: 212307232
По умолчанию

Перенеси session_start(); в самое начало скрипта.
ssdm вне форума  
Старый 30.04.2010, 12:41   #4
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
Репутация: 12
По умолчанию

Цитата:
Сообщение от ssdm Посмотреть сообщение
Перенеси session_start(); в самое начало скрипта.
Спасибо огромное
cheef вне форума  
Старый 30.04.2010, 12:56   #5
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
Репутация: 12
По умолчанию

PHP код:
        if (empty($_SESSION['nick']) or empty($_SESSION['id']))
    {
        print <<<HERE
         <form action="login.php" method="post">
  <br >Введите ник:  
  <br >
    <input name="nick" type="text" id="nick" size="20"  />
    <br>
  Введите пароль:  
  <br>
    <input name="pass" type="password" id="pass" size="20"  />
    <br>
    <input name="submit" type="submit" value="Войти" />
</form>
HERE;
} else{
echo 
"Добрый день, ".$_SESSION['nick']."<br>";    

Использую такую схему, но проблема в том то что сессия длится мало (1 переход) и снова требуется вводить пароль.
Скрипт сессии брал от сюда:
http://ruseller.com/lessons.php?rub=37&id=347
cheef вне форума  
Старый 30.04.2010, 13:40   #6
Vertexxx
Заблокирован
 
Регистрация: 10.04.2010
Адрес: Москва
Сообщений: 145
Репутация: 52

icq: 361620986
По умолчанию

а где фильтрация данных?)) я не приду на ваш сайт!
Чё же вы рветесь сразу к достаточно сложным модулям, не освоив самую малость?

Это что за фокус? У вас совсем нет контроля за методом передачи данных обработчику?
PHP код:
if (isset($_POST['nick']))       {$nick $_POST['nick'];}
if (isset(
$_POST['pass']))       {$pass $_POST['pass'];}


if (isset(
$_GET['nick'])) {$nick $_GET['nick'];}
if (isset(
$_GET['pass'])) {$pass $_GET['pass'];} 
Что будет если мой логин будет ' ?
PHP код:
$result2 mysql_query("SELECT * FROM users WHERE nick='$login'",$db
Дальше смотреть не стал
Vertexxx вне форума  
Старый 30.04.2010, 13:47   #7
ssdm
Участник клуба
 
Регистрация: 20.05.2009
Адрес: СПб
Сообщений: 506
Репутация: 90

icq: 212307232
По умолчанию

Цитата:
Что будет если мой логин будет '
+1
Хотя бы так используйте
Код:
function ToSql($value){
    $value = trim(ltrim($value));
    if( (trim($value)!='') && (trim($value)!='null') ){
            $SqlValue = "'".str_replace("'","''",$value)."'";}
    else{
            $SqlValue = "null";}
    return $SqlValue;
}
$result2 = mysql_query("SELECT * FROM users WHERE nick=".ToSql($login),$db)
Соответственно функцию ToSql() везде используйте где работаете с базой данных.
ssdm вне форума  
Старый 30.04.2010, 13:52   #8
ssdm
Участник клуба
 
Регистрация: 20.05.2009
Адрес: СПб
Сообщений: 506
Репутация: 90

icq: 212307232
По умолчанию

Цитата:
Использую такую схему, но проблема в том то что сессия длится мало (1 переход) и снова требуется вводить пароль.
А в других скриптах session_start() присутствует ?
ssdm вне форума  
Старый 30.04.2010, 13:53   #9
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
Репутация: 12
По умолчанию

Цитата:
Сообщение от Vertexxx Посмотреть сообщение
а где фильтрация данных?)) я не приду на ваш сайт!
Чё же вы рветесь сразу к достаточно сложным модулям, не освоив самую малость?

Это что за фокус? У вас совсем нет контроля за методом передачи данных обработчику?
PHP код:
if (isset($_POST['nick']))       {$nick $_POST['nick'];}
if (isset(
$_POST['pass']))       {$pass $_POST['pass'];}


if (isset(
$_GET['nick'])) {$nick $_GET['nick'];}
if (isset(
$_GET['pass'])) {$pass $_GET['pass'];} 
Что будет если мой логин будет ' ?
PHP код:
$result2 mysql_query("SELECT * FROM users WHERE nick='$login'",$db
Дальше смотреть не стал
как показано в видео уроке так и делаю.
cheef вне форума  
Старый 30.04.2010, 13:54   #10
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
Репутация: 12
По умолчанию

Цитата:
Сообщение от ssdm Посмотреть сообщение
А в других скриптах session_start() присутствует ?
сейчас поставлю
cheef вне форума  
Закрытая тема

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регистрация/авторизация пользователей при помощи PHP, без использования MySQL. Web-Gangsta PHP 30 03.05.2009 18:32
Регистрация limon PHP 1 17.10.2008 10:33
Регистрация БД Gladiator БД в Delphi 1 05.06.2008 00:09


05:22.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.