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

Форум MySQL

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

 

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

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

тема: Активация пользователя
 
 автор: t3ma   (01.08.2009 в 18:43)   письмо автору
 
 

Ребят помогите пожалуйста! почему-то пишет что ваша учетная запись активирована но у поля status остается значение все равно 0 хотя должно менятся на 1

дамп


--
-- Структура таблицы `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL auto_increment,
  `login` varchar(20) NOT NULL default '',
  `password` varchar(20) NOT NULL default '',
  `email` varchar(20) NOT NULL default '',
  `status` int(1) NOT NULL default '0',
  `unique_id` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=39 ;

--
-- Дамп данных таблицы `users`
--

INSERT INTO `users` (`id`, `login`, `password`, `email`, `status`, `unique_id`) VALUES
(38, 'qwe', 'd41d8cd98f00b204e980', 'bbbb@mail.ru', 0, 'b04ca5a28595fac77230dd0b21294e6b');



вот код

<?php
//Модуль отвечающий за активацию аккаунта

     
if($_GET['activation'] AND $_GET['activation']!=''
         {
     
$unique_id $_GET['activation'];

//Создаем запрос

     
$active = @mysql_query("UPDATE users SET status='1' WHERE unique_id='".$unique_id."' AND status='0'");
     if (
$active
         {
         echo 
'Ваша учетная запись активирована. Теперь вы можете войти на сайт используя данные указанные при регистрации';
         }
     else 
         {
         echo 
'Активация невозможна: профиль уже активирован';
         }
}
?>

  Ответить  
 
 автор: EXP   (01.08.2009 в 19:26)   письмо автору
 
   для: t3ma   (01.08.2009 в 18:43)
 

>Команда UPDATE возвращает количество фактически измененных строк.
нужно вызывать например mysql_result() чтобы проверить сколько замен произошло

и if($_GET['activation'] AND $_GET['activation']!='') в случае с пустой строкой сработают оба
по идее должно быть что-то вроде (isset($_GET['activation']) && !empty($_GET['activation']))
но mysql_escape_string() вроде тоже не помешает

upd //хотя с другой стороны :)
int mysql_affected_rows ( [resource link_identifier] )

mysql_affected_rows() возвращает количество рядов, затронутых последним INSERT, UPDATE, DELETE запросом к серверу, на который ссылается указатель link_identifier. Если ресурс не указан, функция использует последнее, успешное соединение, выполненное с помощью функции

  Ответить  
 
 автор: t3ma   (01.08.2009 в 19:38)   письмо автору
 
   для: EXP   (01.08.2009 в 19:26)
 

ничего не понял..
можно пример как должно быть

  Ответить  
 
 автор: EXP   (01.08.2009 в 20:43)   письмо автору
 
   для: t3ma   (01.08.2009 в 19:38)
 

непроверял :)
<?php 
//Модуль отвечающий за активацию аккаунта 
     
if(isset($_GET['activation']) AND $_GET['activation']!='')  
         { 
     
$unique_id mysql_escape_string($_GET['activation']); 

//Создаем запрос 

     
$active = @mysql_query("UPDATE users SET status='1' WHERE unique_id='".$unique_id."' AND status='0'"); 
     if (
mysql_affected_rows() == 1)  
         { 
         echo 
'Ваша учетная запись активирована. Теперь вы можете войти на сайт используя данные указанные при регистрации'
         
.' и активирована всего одна запись:)'
         } 
     else  
         { 
         echo 
'Активация невозможна: профиль уже активирован'
         
.' или нет такого unique_id 
         или активировано сразу несколько профилЕй :)'

         } 

?>

  Ответить  
 
 автор: t3ma   (01.08.2009 в 20:49)   письмо автору
 
   для: EXP   (01.08.2009 в 20:43)
 

Спасибо все работает :)
но не понятно "или активировано сразу несколько профилЕй :)"
как может быть активировано несколько профилей ? ))

  Ответить  
 
 автор: neadekvat   (01.08.2009 в 21:03)   письмо автору
 
   для: t3ma   (01.08.2009 в 20:49)
 

В случаи, если уникальный код оказался не таким уж уникальным)

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

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