Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2013, 09:41   #1
linkoln_7
Форумчанин
 
Регистрация: 04.03.2013
Сообщений: 164
По умолчанию c cookie на session

Код:
<?php
# подключаем конфиг
include '../config.php';  

# проверка авторизации
if (isset($_COOKIE['id']) and isset($_COOKIE['hash'])) 
{    
    $userdata = mysql_fetch_assoc(mysql_query("SELECT * FROM polzov WHERE id = '".intval($_COOKIE['id'])."' LIMIT 1"));

    if(($userdata['hash'] !== $_COOKIE['hash']) or ($userdata['id'] !== $_COOKIE['id'])) 
    { 
        setcookie('id', '', time() - 60*24*30*12, '/'); 
        setcookie('hash', '', time() - 60*24*30*12, '/');
    setcookie('errors', '1', time() + 60*24*30*12, '/');
    header('Location: login.php'); exit();
    } 
} 
else 
{ 
 setcookie('errors', '2', time() + 60*24*30*12, '/');//ЭТО НУЖНО
  header('Location: login.php'); exit();

}
?>
<!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" xml:lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
  <title></title>
</head>
<body>
    <?php // $login= $_REQUEST['login']; ?>
    hello!<?php  //echo $login;?>,Теперь ты можешь подавать  <a href="../podat.php">объявления</a>
   
</body>
</html>




Код:




<?php
  # Функция для генерации случайной строки 
  function generateCode($length=6) { 
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789"; 
    $code = ""; 
    $clen = strlen($chars) - 1;   
    while (strlen($code) < $length) { 
        $code .= $chars[mt_rand(0,$clen)];   
    } 
    return $code; 
  } 
  
  # Если есть куки с ошибкой то выводим их в переменную и удаляем куки
  if (isset($_COOKIE['errors'])){
      $errors = $_COOKIE['errors'];
      setcookie('errors', '', time() - 60*24*30*12, '/');
  }

  # Подключаем конфиг
  include '../config.php';

  if(isset($_POST['submit'])) 
  { 
    
    # Вытаскиваем из БД запись, у которой логин равняеться введенному 
    $data = mysql_fetch_assoc(mysql_query("SELECT id, password FROM `polzov` WHERE `login`='".mysql_real_escape_string($_POST['login'])."' LIMIT 1")); 
     
    # Соавниваем пароли 
    if($data['password'] === md5(md5($_POST['password']))) 
    { 
      # Генерируем случайное число и шифруем его 
      $hash = md5(generateCode(10)); 
           
      # Записываем в БД новый хеш авторизации и IP 
      mysql_query("UPDATE polzov SET hash='".$hash."' WHERE id='".$data['id']."'") or die("MySQL Error: " . mysql_error()); ///////проверь тут
       
      # Ставим куки 
      setcookie("id", $data['id'], time()+60*60*24*30); 
      setcookie("hash", $hash, time()+60*60*24*30); 
       
      # Переадресовываем браузер на страницу проверки нашего скрипта 
      header("Location: check.php"); exit(); 
    } 
    else 
    { 
      print "Вы ввели неправильный логин/пароль<br>"; 
    } 
  } 
?>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <form method="POST"> 
  Логин <input name="login" type="text"><br> 
  Пароль <input name="password" type="password"><br> 
  <input name="submit" type="submit" value="Войти"> 
  </form>
  <?php
  # Проверяем наличие в куках номера ошибки
  if (isset($errors)) {print '<h4>'.$error[$errors].'</h4>';}

  ?>
не подскажите ли,как переделать на сессии с кук,а то на хостинге не работает куки
linkoln_7 вне форума Ответить с цитированием
Старый 28.05.2013, 10:31   #2
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

1. в файле config.php указываем в самом начале session_start(); - до вывода вообще чего либо в браузер
2. заменяем все setcookie на $_SESSION['name'] = value;
3. для получения значения $_SESSION['name']
CodeNOT вне форума Ответить с цитированием
Старый 28.05.2013, 18:56   #3
linkoln_7
Форумчанин
 
Регистрация: 04.03.2013
Сообщений: 164
По умолчанию

вместо setcookie('id', '', time() - 60*24*30*12, '/');
так??
$_SESSION['id'] = ( time() - 60*24*30*12, '/');
linkoln_7 вне форума Ответить с цитированием
Старый 28.05.2013, 21:42   #4
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

нет $_SESSION['id'] = time() - 60 * 24*30*12
CodeNOT вне форума Ответить с цитированием
Старый 28.05.2013, 22:22   #5
linkoln_7
Форумчанин
 
Регистрация: 04.03.2013
Сообщений: 164
По умолчанию

setcookie("id", $data['id'], time()+60*60*24*30);
так?
$_SESSION['id'] = $data['id'], time() - 60 * 24*30*12;
linkoln_7 вне форума Ответить с цитированием
Старый 28.05.2013, 23:32   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

Думаю вам нужно прочитать про синтаксис и кук и сессий и понять что к чему
ADSoft вне форума Ответить с цитированием
Старый 28.05.2013, 23:35   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

$_SESSION['id'] = $data['id']; вот так, никаких временных меток не надо
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Session javas PHP 1 27.07.2011 11:06
Cannot send session cookie KLAXON PHP 6 09.02.2011 22:39
session в php Delphinchik PHP 0 15.01.2011 12:22
Не работает SESSION на localhost Викдон PHP 0 16.04.2010 11:16
Session Shyt PHP 12 15.11.2009 15:52