EOMY.NET
на главную
EOMY.NET
Хостинг EOMY.NET: Форум поддержки
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   <b>Лотерея</b>Лотерея   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

RSS Feed

Вопрос по php/MySQL
На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.
 
Начать новую тему   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов EOMY.NET -> Программирование для WEB
Вопрос по php/MySQL
Автор Сообщение
Alek$
$a ||= 5;
$a ||= 5;


Зарегистрирован: 24.11.2007
Сообщения: 820

19477 Монеты

СообщениеДобавлено: Чт, 28 Авг, 2008 08:25    Заголовок сообщения: Ответить с цитатой

Первый вроде должен сработать
_________________
Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB3 [Russian]
Антисоциальный блог
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Веденин
$a ||= 5;
$a ||= 5;


Зарегистрирован: 17.05.2007
Сообщения: 878
Откуда: Самара
15245 Монеты

СообщениеДобавлено: Чт, 28 Авг, 2008 08:25    Заголовок сообщения: Ответить с цитатой

антон888 писал(а):
тогда всё довольно просто : содержимое в двойных кавычках парсится на наличие в нём php кода (чаще всего переменных) , а содержимое одинарных кавычек читается как обычная строка.

Попробуй напсать что-нить вроде

$a = 2;
echo "var a = $a";
echo 'var a = $a';

Меня лично недавно поставило в полное замешательство то, что двойные кавычки в русской раскладке (Shift + 2) и двойные кавычки в английской (Shift + Э) не есть одно и тоже Shocked . А я думал у них аскии коды одинаковые..


Кстати поэтому использование двойных кавычек с пользовательскими данными категорически не рекомендуется из-за безопасности
_________________
Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Веденин
$a ||= 5;
$a ||= 5;


Зарегистрирован: 17.05.2007
Сообщения: 878
Откуда: Самара
15245 Монеты

СообщениеДобавлено: Чт, 28 Авг, 2008 08:31    Заголовок сообщения: Ответить с цитатой

lazutov писал(а):
Здравствуйте,
Такая ситуация: есть текст весом 200кб.
в нем есть штуки вида <span class=invis>какоето_разное_количество_букаф</span>
и встречается это каждые 5-10 символов.

необходимо эту штуку оттуда массово удалить.
strpos+substr не рулят к сожалению.такой вариант сделан, но рассматриваться будет в последнюю очередь
Заранее спасибо.
// с меня как обычно чуток монеток


Код:

DeleteTeg('<span class=invis>какоето_разное_количество_букаф</span>');

# Удаление всех тегов HTML (получение только текста)
function DeleteTeg($pstr)
{   
   $i = 0;
   $flag=false;
   $text = '';
   while($i<=strlen($pstr)){     
     if($pstr[$i]=='<') {           
        $i++;
        if($pstr[$i]=='/'){$i++;$flag=true;}
        workTeg($pstr,$i);
        $i++;       
     } else {
        $text .= $pstr[$i];
        $i++;
     }
   }
   return $text;
 }

# Обработка тега HTML
   function workTeg($pstr,&$i){
      $arrayteg = array();
      $arrayteg['0'] = getName($pstr,$i);     
      if(!getFirstChar($pstr,$i)) return;
      $j = 0;
      while($i<=strlen($pstr)){                           
        if(!getFirstChar($pstr,$i)) return $arrayteg;
        $tmp = getName($pstr,$i);
        $arrayteg[$tmp]="";
        if(strlen($tmp)>0){               
          if(!getFirstChar($pstr,$i)) return $arrayteg;        
             if($pstr[$i] == "=") {
      $i++;
      if(!getFirstChar($pstr,$i)) return $arrayteg;
                 $arrayteg[$tmp]=getProperty($pstr,$i);
             }       
        } else {$i++;}           
   $j++;
      }           
      return $arrayteg;
   }

# Получение первого символа             
   function getFirstChar($pstr,&$i){
      while($i<=strlen($pstr) && $pstr[$i] != '>' && $pstr[$i] != '<') {       
        if(!isSpace($pstr[$i],$i)) {
          return true;
        }
   $i++;
      } 
      return false;
   }

# Получение имени тега или атрибута
   function getName($pstr,&$i){
      $tmp = '';
      while($i<=strlen($pstr) && isChar($pstr[$i],$i)) {
        $tmp .= $pstr[$i];
        $i ++;
      }
      return $tmp;   
   }

# Получение атрибута
   function getProperty($pstr,&$i){       
     if($pstr[$i]!='"' && $pstr[$i]!="'"){         
         return getName($pstr,$i);
     } else {                 
         $tmp = $pstr[$i]; $i++; $tmp1 = "";
         while($pstr[$i] != $tmp && $i<=strlen($pstr)) {      
            $tmp1 .= $pstr[$i];
            $i++;
         }
    $i++;
         return $tmp1;
     }
   }

# Проверка символ ли
   function isChar($pchar,&$i){
     return ($pchar>='a' && $pchar<='z') || ($pchar>='A' && $pchar<='Z') || ($pchar>='0' && $pchar<='9') || $pchar == '-'  || $pchar == '.' || $pchar == '!';
   }

# Проверка пробел ли 
   function isSpace($pchar,&$i){
     return $pchar <= " ";
   }


P.S. Регулярные выражения зло
P.P.S. функция workTeg возвращает массив где перечислены все возможные атрибуты тега, начинает с i позиции (внимание тег должен быть с названия без < и </ ), может она тоже пригодится
_________________
Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Alek$
$a ||= 5;
$a ||= 5;


Зарегистрирован: 24.11.2007
Сообщения: 820

19477 Монеты

СообщениеДобавлено: Чт, 28 Авг, 2008 08:36    Заголовок сообщения: Ответить с цитатой

Веденин писал(а):
P.S. Регулярные выражения зло

Обоснуйте. При помощи регулярных выражений поставленная задача решается в 1 строчку.
_________________
Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB3 [Russian]
Антисоциальный блог
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Веденин
$a ||= 5;
$a ||= 5;


Зарегистрирован: 17.05.2007
Сообщения: 878
Откуда: Самара
15245 Монеты

СообщениеДобавлено: Чт, 28 Авг, 2008 08:39    Заголовок сообщения: Ответить с цитатой

1) быстройдействие
2) если надо не удалить теги, а скажем получить массив всех атрибутов тега придется повозится
3) сложность регуляров

не всегда зло, скажем так для многих задач зло

Цитата:
Обоснуйте. При помощи регулярных выражений поставленная задача решается в 1 строчку.

не уверен, ибо могут быть варианты вроде <span a="gg>s'sf>'<fs" e='sfg<fdg/>s</>' r=sfdhfgks kjl dgjdfj=dgdf впвор = "sdfs sDF">dgkl</span>
уверены, что сможете просто и быстро написать регуляр? Я честно не смогу
_________________
Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
lazutov
$a ||= 5;
$a ||= 5;


Зарегистрирован: 30.04.2007
Сообщения: 2094

12361 Монеты

СообщениеДобавлено: Чт, 28 Авг, 2008 08:45    Заголовок сообщения: Ответить с цитатой

1) потестил. Что 0,21с что 0,28 - силно много,да
2) тоже одна строка в рег. выражениях
3) хм. Я тоже так думал, пока не стал изучать.
_________________
lazutov.ru - блог, Lwhois - Удобный whois для windows | NameIntelligence -все будет... Зимой... |whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле Smile - в ЛС
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Веденин
$a ||= 5;
$a ||= 5;


Зарегистрирован: 17.05.2007
Сообщения: 878
Откуда: Самара
15245 Монеты

СообщениеДобавлено: Чт, 28 Авг, 2008 08:50    Заголовок сообщения: Ответить с цитатой

Цитата:
Что 0,21с что 0,28 - силно много,да

для меня 25% очень много, так как у меня есть задачи по обработке пары гигабайт текстовых файлов, это значить комп будет работать значительно дольше

P.S. Во избежания вопросов данные на уже загруженны на локальный комп, так что больше всего времени занимает именно их обработка
_________________
Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Alek$
$a ||= 5;
$a ||= 5;


Зарегистрирован: 24.11.2007
Сообщения: 820

19477 Монеты

СообщениеДобавлено: Чт, 28 Авг, 2008 09:11    Заголовок сообщения: Ответить с цитатой

Веденин писал(а):
не уверен, ибо могут быть варианты вроде <span a="gg>s'sf>'<fs" e='sfg<fdg/>s</>' r=sfdhfgks kjl dgjdfj=dgdf впвор = "sdfs sDF">dgkl</span>
уверены, что сможете просто и быстро написать регуляр? Я честно не смогу

Поэксперементирую минут десять и смогу Cool
_________________
Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB3 [Russian]
Антисоциальный блог
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
lazutov
$a ||= 5;
$a ||= 5;


Зарегистрирован: 30.04.2007
Сообщения: 2094

12361 Монеты

СообщениеДобавлено: Пн, 01 Сен, 2008 15:47    Заголовок сообщения: Ответить с цитатой

Веденин
Хотите живой пример:
Вот график загрузки CPU:


PHP-скрипт работает и проверяет тИЦ у 10000+ доменов.
Сначала разбор страницы выполнялся стрингами(точка 1V). Затем после перезапуска сервисов был запущен тот же скрипт, но разбор страницы осуществлялся регэкспами.
Разница небольшая, но есть.
Я ,признаться , ожидал, что все будет наоборот.
_________________
lazutov.ru - блог, Lwhois - Удобный whois для windows | NameIntelligence -все будет... Зимой... |whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле Smile - в ЛС
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
uforum
$a ||= 5;
$a ||= 5;


Зарегистрирован: 22.01.2008
Сообщения: 632
Откуда: Литва
4724 Монеты

СообщениеДобавлено: Сб, 18 Окт, 2008 12:19    Заголовок сообщения: Ответить с цитатой

Код:
   if (!isset($_POST['userlogin']))
      {
      $authenter = 0;
      }   
   else
      {
      if (!isset($_POST['password']))
      {
         $authenter = 0;
      }
      else
         {         
         $userpass = $_POST['password'];
         $userloginn = $_POST['userlogin'];
         $userlogin = strip_tags($userloginn);
         $sqlqueryauth = "SELECT `password` FROM `users` WHERE `username`=`$userlogin`";
         $authpassword = mysql_query($sqlqueryauth, $linkmain);
         if ($userpass == $authpassword)
            {
            $authenter = 1;
            }
         else
            {
            $authenter = 0;
            }
         }
      }
   $userlogoutn = $_GET[logout];
   $userlogout = strip_tags($userlogoutn);
   if (!isset($userlogout))
      {
      }
   else
      {
      if ($userlogout == 1)
         {
         $userpass = 0;
         $userloginn = 0;
         $userlogin = 0;
         $authenter = 0;
         }
      }


Почемуто не работает

Всегда отдаёт
$authenter = 1;

Помогите пожалуйсто с меня монетки Very Happy
_________________


FireCore build 1018 - добавлено столько всего и изменено что несчесть.
Это почти готовый реализ нехватает только компонента установки ботов

http://uforum.org.ua/
Всё про ОС в широком формате

http://fccms.hmarka.net/
Мой блог
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора Yahoo Messenger
lazutov
$a ||= 5;
$a ||= 5;


Зарегистрирован: 30.04.2007
Сообщения: 2094

12361 Монеты

СообщениеДобавлено: Сб, 18 Окт, 2008 13:15    Заголовок сообщения: Ответить с цитатой

хотябы объясните, что он делает
_________________
lazutov.ru - блог, Lwhois - Удобный whois для windows | NameIntelligence -все будет... Зимой... |whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле Smile - в ЛС
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
uforum
$a ||= 5;
$a ||= 5;


Зарегистрирован: 22.01.2008
Сообщения: 632
Откуда: Литва
4724 Монеты

СообщениеДобавлено: Сб, 18 Окт, 2008 13:26    Заголовок сообщения: Ответить с цитатой

lazutov
Он получает параметры логин и пароль юзера и определяет вошёл юзер или нет
Это определяется посредством $authenter если она = 1 то юзер вошел если 0 или другое значение о он не вошёл.
Дальше в срипте модули могут использовать эту переменую
В моём случеи модуль меню если 1 то показывается меню админа и модуль отображения контента и тд.

Вот весь Index.php

Код:
<?php
/*
+ ----------------------------------------------------------------------------+
|     ©Arthur Jakshanov 2008-2009
|     aeroos.info
|     admindeskme@gmail.com
|
|     Released under the terms and conditions of the
|     GNU General Public License (http://gnu.org).
|
|     $Revision: 0.01 $
|     $Date: 2008/10/16 14:00:00 $
|     $Author: Создатели кода Fcblog $
+----------------------------------------------------------------------------+

*/
//Load settings
   require_once('settings.php');

//Load link to connect to db
   $linkmain = mysql_connect("$host", "$user", "$password");
   mysql_select_db($db, $linkmain);
   
//loads site meta
   echo $sitemeta;
   
//Get parametr for search
   if (!isset($_GET['keyword']))
      {
      $keyword = "no";
      }
   else
      {
      $keywordn = $_GET['keyword'];
      $keyword = strip_tags($keywordn);
      }

//Check authorization
   if (!isset($_POST['userlogin']))
      {
      $authenter = 0;
      }   
   else
      {
      if (!isset($_POST['password']))
      {
         $authenter = 0;
      }
      else
         {         
         $userpass = $_POST['password'];
         $userloginn = $_POST['userlogin'];
         $userlogin = strip_tags($userloginn);
         $sqlqueryauth = "SELECT `password` FROM `users` WHERE `username`=`$userlogin`";
         $authpassword = mysql_query($sqlqueryauth, $linkmain);
         if ($userpass == $authpassword)
            {
            $authenter = 1;
            }
         else
            {
            $authenter = 0;
            }
         }
      }
   $userlogoutn = $_GET[logout];
   $userlogout = strip_tags($userlogoutn);
   if (!isset($userlogout))
      {
      }
   else
      {
      if ($userlogout == 1)
         {
         $userpass = 0;
         $userloginn = 0;
         $userlogin = 0;
         $authenter = 0;
         }
      }
//Maximum article quantity on the page
   $limitarticlen = $_GET[limit];
   $limitarticle = $_GET[limit];
   $startarticlesen = $_GET[vor];
   $startarticls = strip_tags($startarticlesen);
   $backarticlesen = $_GET[start];
   $backarticlese = strip_tags($backarticlesen);
   if ($startarticls) {$starta = $limitarticle + $maximumarticlesperpage;}
   if ($backarticlese) {$starta = $limitarticle - $maximumarticlesperpage;}
   if (!$starta) {$starta = 0;}
      
//Get page
   if (!isset($_GET['page']))
      {
      $sqlcontent = "SELECT `ID`, `name`, `content`, `date`, `categori`, `comments`, `datum`  from `content` ORDER BY `ID` DESC LIMIT ".$starta." , ".$maximumarticlesperpage."";
      }
   else
      {
      $pagen = $_GET['page'];
      $page = strip_tags($pagen);
      $sqlcontent = "SELECT `ID`, `name`, `content`, `date`, `categori`, `comments`, `datum`  from `content` WHERE `page`=$page ORDER BY `ID` DESC LIMIT ".$starta." , ".$maximumarticlesperpage."";
      }

//Get ID
   if (!isset($_GET['id']))
      {
      }
   else
      {
      $idn = $_GET['catt'];
      $id = strip_tags($idn);
      $sqlcontent = "SELECT `name`, `content`, `date`, `categori`, `comments`, `datum`  from `content` WHERE `ID`=$id ORDER BY `ID` DESC LIMIT ".$starta." , ".$maximumarticlesperpage."";
      }

//Get module parametr
   if (!isset($_GET['module']))
      {
      $loadmodule = "content";
      }
   else
      {
      $loadmodulen = $_GET['module'];
      $loadmodule = strip_tags($loadmodulen);
      }

   
//load template
   require_once("files/templates/$template/template.php");

//Load copyright
   echo $fccopyright;   
   mysql_close();
?>

_________________


FireCore build 1018 - добавлено столько всего и изменено что несчесть.
Это почти готовый реализ нехватает только компонента установки ботов

http://uforum.org.ua/
Всё про ОС в широком формате

http://fccms.hmarka.net/
Мой блог
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора Yahoo Messenger
Веденин
$a ||= 5;
$a ||= 5;


Зарегистрирован: 17.05.2007
Сообщения: 878
Откуда: Самара
15245 Монеты

СообщениеДобавлено: Сб, 18 Окт, 2008 14:12    Заголовок сообщения: Ответить с цитатой

проверте, что вернет запрос SELECT `password` FROM `users`
этот код выглядит странно, если имени пользователя нет в БД и он введет пустой пароль, то он сможет войти, также пользователь всегда сможет войти при проблемах с соединением к my_sql или отсутвии данных в базе.
код $userpass == $authpassword лучше переписать как
Код:
 strlen($userpass)>0 && strlen($authpassword)>0 && $userpass == $authpassword

тогда возвращать $authenter = 1 не будет

проверьте такой пользователь сможет войти всегда ?password=&userlogin=&
_________________
Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
girafenok
Хостинг — это наше всё!
Хостинг — это наше всё!


Зарегистрирован: 17.11.2007
Сообщения: 129

10975 Монеты

СообщениеДобавлено: Сб, 18 Окт, 2008 15:26    Заголовок сообщения: Ответить с цитатой

Количество if ужасно много.
Код:
$authenter = 0;
if ((isset($_POST['userlogin']))&&(isset($_POST['password'])))
{
 $userpass = $_POST['password'];
 $userlogin = strip_tags($_POST['userlogin']);
 $sqlqueryauth = "SELECT `password` FROM `users` WHERE `username`=`$userlogin` AND `$userpass` == `$authpassword`";
 $result = mysql_query($sqlqueryauth, $linkmain);
 if mysql_num_rows($result)>0 {$authenter = 1;}
}
if ((isset($_GET[logout]))&&(strip_tags($_GET[logout]) == 1))
    {
         $userpass = 0;
         $userloginn = 0;
         $userlogin = 0;
         $authenter = 0;
    }


P.S. Возможны синтаксические ошибки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
uforum
$a ||= 5;
$a ||= 5;


Зарегистрирован: 22.01.2008
Сообщения: 632
Откуда: Литва
4724 Монеты

СообщениеДобавлено: Сб, 18 Окт, 2008 15:27    Заголовок сообщения: Ответить с цитатой

Веденин
запрос вернул пустоту
но $authenter всеравно 1

girafenok

$authenter = 1;
_________________


FireCore build 1018 - добавлено столько всего и изменено что несчесть.
Это почти готовый реализ нехватает только компонента установки ботов

http://uforum.org.ua/
Всё про ОС в широком формате

http://fccms.hmarka.net/
Мой блог
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора Yahoo Messenger
Показать сообщения:   
Начать новую тему   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов EOMY.NET -> Программирование для WEB Часовой пояс: GMT
На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.
Страница 6 из 8

 


EOMY TOP 100 Rambler's Top100   Рейтинг@Mail.ru    



Powered by phpBB © 2001, 2005 phpBB Group






Рейтинг SIMPLETOP.NET