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

Форум PHP

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

 

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

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

тема: Ошибка на LiteForum
 
 автор: Lewwel   (02.04.2006 в 08:44)   письмо автору
 
 

forum/skel/register.php

Ошибка при регистрации нового посетителя

Error: You have an error in your SQL syntax near ' '', 'no', '', '', '' at line 4


<?php
  
///////////////////////////////////////////////////
  // Web-приложение форум - LiteForum
  // Поддержка http://www.softtime.ru/forum/
  // 2003-2005 (C) IT-студия SoftTime (http://www.softtime.ru)
  // Симдянов И.В. (simdyanov@softtime.ru)
  // Голышев С.В. (softtime@softtime.ru)
  // Кузнецов М.В. (kuznetsov@softtime.ru)
  ///////////////////////////////////////////////////
  // 01.02.2005 Симдянов И.В. (simdyanov@softtime.ru)
  //            устранение уязвимостей SQL-инъекции
  // 28.08.2005 Симдянов И.В. (simdyanov@softtime.ru)
  //            разделение времени последнего посещения
  //            на форумах
  // 01.09.2005 Симдянов И.В. (simdyanov@softtime.ru)
  //            ограничение имени 20 символами
  // 17.09.2005 Симдянов И.В. (simdyanov@softtime.ru)
  //            Устранена ошибка когда не вводился 
  //            e-mail, но отмечалась галка подписки
  ///////////////////////////////////////////////////
  // Выставляем уровень обработки ошибок (http://www.softtime.ru/info/articlephp.php?id_article=23)
  
Error_Reporting(E_ALL & ~E_NOTICE); 
  
// Подавляем кэширование
  
header("Expires: Mon, 23 May 1995 02:00:00 GMT"); 
  
header("Cache-Control: no-cache, must-revalidate");
  
header("Pragma: no-cache");

  
// Устанавливаем соединение с базой данных
  
require_once("config.php");
  
// Подключаем библиотеку форума
  
require_once("../utils/utils.php");
  
// Извлекаем настройки форума
  
$set mysql_query("SELECT * from settings");
  if(
$set$settings mysql_fetch_array($set);
  else 
puterror("Ошибка при обращении к списку настроек форума");

  
///////////////////////////////////////////////////////////
  // Блок подготовки и проверки
  ///////////////////////////////////////////////////////////
  // Получаем данные отправленные методом POST
  
$author trim($_POST['author']);
  
$pswrd $_POST['pswrd'];
  
$pswrd_again $_POST['pswrd_again'];
  
$email trim($_POST['email']);
  
$icq trim($_POST['icq']);
  
$url trim($_POST['url']);
  
$about trim($_POST['about']);
  
$subscribe $_POST['subscribe'];
  
$id_forum trim($_POST['id_forum']);
  
// Подготавливаем переменные для добавления в SQL-запрос, экранируя
  // все спецсимволы при помощи функции mysql_escape_string();
  
$author str_replace("'","'",$author);
  
$pswrd str_replace("'","'",$pswrd);
  
$pswrd_again str_replace("'","'",$pswrd_again);
  
$about str_replace("'","'",$about);
  
$url str_replace("'","'",$url);
  
$message str_replace("'","'",$message);
  
$subscribe str_replace("'","'",$subscribe);
  if (!
get_magic_quotes_gpc())
  {
    
$author mysql_escape_string($author);
    
$pswrd mysql_escape_string($pswrd);
    
$pswrd_again mysql_escape_string($pswrd_again);
    
$about mysql_escape_string($about);
    
$message mysql_escape_string($message);
    
$url mysql_escape_string($url);
    
$subscribe mysql_escape_string($subscribe);
  }
  
// Проверяем правильность ввода данных
  
if(empty($author)) links_forum($id_forum,"Не указано имя");
  if(
strlen($author) > 20links_forum($id_forum,"Слишком длинное имя");
  if(empty(
$pswrd) || empty($pswrd_again) || $pswrd != $pswrd_againlinks_forum($id_forum,"Ошибка в паролях");

  if(
$settings['user_email_required'] == 'yes')
  {
    if (!
preg_match("/^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$/i"$email)) links_forum($id_forum,"Введите e-mail в виде <i>something@server.com</i>");
  }
  else if(!empty(
$email))
  {
    if (!
preg_match("/^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$/i"$email)) links_forum($id_forum,"Введите e-mail в виде <i>something@server.com</i>");
  }

  if(!empty(
$icq))
  {
    if(!
preg_match("|^[\d]+$|",$icq)) links_forum($id_forum,"Введите номер ICQ в виде");
  }
  
// Проверяем нужно ли отправлять письмо автору при добавлении
  // новой темы
  
if(!empty($email))
  {
    if(
$subscribe == "on"$subscribe 'yes';
    else 
$subscribe 'no';
  } else 
$subscribe 'no';
  
///////////////////////////////////////////////////////////
  // Блок проверки регистрации имени
  ///////////////////////////////////////////////////////////
  // Выясняем не зарегистрировано ли уже это имя
  // Возможно три ситуации, которые необходимо предотвратить:
  // 1. Вводится ник, полностью совпадающий с уже существующим
  // 2. Вводится уже существующий кирилический ник, в котором
  //    одна или несколько букв заменены на латинские
  // 3. Вводится уже существующий латинский ник, в котором
  //    одна или несколько букв заменениы на кирилические
  // Массив кирилических букв
  
$rus = array("А","а","В","Е","е","К","М","Н","О","о","Р","р","С","с","Т","Х","х");
  
// Массив латинских букв
  
$eng = array("A","a","B","E","e","K","M","H","O","o","P","p","C","c","T","X","x");
  
// Заменяем русские буквы латинскими
  
$eng_author str_replace($rus$eng$author); 
  
// Заменяем латинские буквы русскими
  
$rus_author str_replace($eng$rus$author); 
  
// Формируем SQL-запрос
  
$query "SELECT * FROM authors 
            WHERE name LIKE '
$author' OR
                  name LIKE '
$eng_author' OR
                  name LIKE '
$rus_author'";
  
$ath mysql_query($query);
  if(
$ath)
  {
    if(
mysql_num_rows($ath)>0)
       
links_forum($id_forum"К сожалению, данное имя уже зарегистрировано. Поробуйте другое.");
  } else 
puterror("Ошибка при регистрации нового посетителя");
  
// Выясняем, не создаётся ли новое имя для дискредитации
  ///////////////////////////////////////////////////////////
  // Блок загрузки файла на сервер
  ///////////////////////////////////////////////////////////
  
$url_photo "";
  
// Если поле выбора фотографии не пустое,
  // закачиваем её на сервер и переименовываем
  
if (!empty($_FILES['photo']['tmp_name']) && $_FILES['photo']['tmp_name'] != "-")
  {
    
// Проверяем не больше ли файл 512 Кб
    
if($_FILES['photo']['size'] > $settings['size_photo'])
    
links($id_forum,
          
$id_theme,
          
"Слишком большая фотография (более 512 Kb)");
    
// Извлекаем из имени файла расширение
    
$ext strrchr($_FILES['photo']['name'], "."); 
    
// Разрешаем загружать файлы только определённого форматм
    
$extentions = array(".jpg",".gif");
    
// Формируем путь к файлу    
    
if(in_array($ext$extentions))
    {
      
$path="photo/".date("YmdHis",time()).$ext
      
// Перемещаем файл из временной директории сервера в
      // директорию /photo Web-приложения
      
if (copy($_FILES['photo']['tmp_name'], $path))
      {
        
// Уничтожаем файл во временной директории
        
unlink($_FILES['photo']['tmp_name']);
        
// Изменяем права доступа к файлу
        
chmod($path0644);
        
$url_photo $path;
      }
    }
  }
  
///////////////////////////////////////////////////////////
  // Блок формирования и выполнения SQL-запроса
  ///////////////////////////////////////////////////////////
  // Если необходимо, чтобы пользователь был авторизован
  // уже зарегистрированным участником, присваиваем при регистрации
  // ему статус "wait"
  
if($settings['confirm_registration'] == 'yes')
  {
    
$status "wait";
    
// Извлекаем имя автора и его e-mail для
    // подтверждения регистрации
    
$confirm_author $_POST['confirm_author'];
    if(!
preg_match("|^[\d]+$|",$confirm_author)) puterror("Ошибка во время регистрации1");
    
$query "SELECT * FROM authors 
              WHERE id_author = 
$confirm_author AND
                    statususer != 'wait'"
;
    
$ath mysql_query($query);
    if(!
$athputerror("Ошибка во время регистрации");
    if(
mysql_num_rows($ath) < 1puterror("Ошибка во время регистрации");
    
$confirm_author mysql_fetch_array($ath);
    
$thm "Просьба подтвердить регистрацию нового участиника форума ".$settings['name_forum'];
    
$path substr($_SERVER['PHP_SELF'], 0strlen($_SERVER['PHP_SELF']) - 12);
    
$msg "Если вам знаком новый участник форума $author, пожалуйста подтвердите его регистрацию по ссылке http://".$_SERVER['SERVER_NAME'].$path."confirm.php?id_confirm=".$confirm_author['id_author']."&author=".urlencode($author).". Если вы в первый раз слышите о таком участнике, просто удалите это письмо.";
    
// Изменяем кодировку
    
$thm =  convert_cyr_string(stripslashes($thm),'w','k'); 
    
$msg =  convert_cyr_string(stripslashes($msg),'w','k'); 
    
$pre =  convert_cyr_string(stripslashes($author),'w','k'); 
    
$header "Content-Type: text/html; charset=KOI8-R\r\n";
    
$header .= "From: $pre <$email>\r\n\r\n";
    
// Если на странице администрирования указан
    // адрес отсылки сообщения - отправляем письмо
    
mail($confirm_author['email'], $thm$msg$header);
  }
  else
  {
    
$status "";
  }

  
// Формируем запрос SQL-оператор INSERT для
  // добавления нового зарегистрированного посетителя
  
$query_author "INSERT INTO authors VALUES(
           NULL,
           '
$author',
           "
.get_password($pswrd).",
           '
$email',
           '
$subscribe',
           '
$url',
           '
$icq',
           '
$about',
           '
$url_photo',
           NOW(),
           NOW(),
           0,
           '
$status')";
  
  if(!
mysql_query($query_author)) puterror("Ошибка при регистрации нового посетителя");

  
$query "SELECT * FROM last_time LIMIT 1";
  
$lst mysql_query($query);
  if(!
$lstputerror("Ошибка при извлечении списка форумов");
  
$num mysql_num_fields($lst);
  
$num $num 1;
  for(
$i 0$i<$num$i++)
  {
    
$arr[] = 'NOW()';
  }

  
$query_last_time "INSERT INTO last_time VALUES(".mysql_insert_id().",";
  
$query_last_time .= implode(',',$arr).")";
  if(!
mysql_query($query_last_time)) puterror("Ошибка при регистрации нового посетителя");
  
// Осуществляем автоматический "вход" на форум
  
setallcookie($author$pswrd);
  
// Обновляем дату последнего вхождения
  
settime($author,false,$id_forum);
  
// Осуществляем автоматический переход на главную страницу форума
  
echo "<HTML><HEAD>
        <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_forum=
$id_forum'>
        </HEAD></HTML>"
;
?>

   
 
 автор: Lenux   (02.04.2006 в 09:08)   письмо автору
 
   для: Lewwel   (02.04.2006 в 08:44)
 

по пробуй заюзать!

   
 
 автор: cheops   (02.04.2006 в 12:57)   письмо автору
 
   для: Lewwel   (02.04.2006 в 08:44)
 

Если вам не сложно, поместите перед блоком
<?php
  $query_author 
"INSERT INTO authors VALUES( 
           NULL, 
           '
$author', 
           "
.get_password($pswrd).", 
           '
$email', 
           '
$subscribe', 
           '
$url', 
           '
$icq', 
           '
$about', 
           '
$url_photo', 
           NOW(), 
           NOW(), 
           0, 
           '
$status')";
?>

вывод
<?php
  
echo get_password($pswrd);
?>

что он выводит?

   
Rambler's Top100
вверх

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