EOMY.NET на главную
|
EOMY.NET Хостинг EOMY.NET: Форум поддержки
|
|
Вопрос по php/MySQL
|
| Автор |
Сообщение |
Alek$ $a ||= 5;


Зарегистрирован: 24.11.2007 Сообщения: 820
19477 
|
|
| Вернуться к началу |
|
 |
Веденин $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 + Э) не есть одно и тоже . А я думал у них аскии коды одинаковые.. |
Кстати поэтому использование двойных кавычек с пользовательскими данными категорически не рекомендуется из-за безопасности _________________ Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других |
|
| Вернуться к началу |
|
 |
Веденин $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 позиции (внимание тег должен быть с названия без < и </ ), может она тоже пригодится _________________ Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других |
|
| Вернуться к началу |
|
 |
Alek$ $a ||= 5;


Зарегистрирован: 24.11.2007 Сообщения: 820
19477 
|
Добавлено: Чт, 28 Авг, 2008 08:36 Заголовок сообщения: |
|
|
| Веденин писал(а): | | P.S. Регулярные выражения зло |
Обоснуйте. При помощи регулярных выражений поставленная задача решается в 1 строчку. _________________ Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB3 [Russian]
Антисоциальный блог |
|
| Вернуться к началу |
|
 |
Веденин $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>
уверены, что сможете просто и быстро написать регуляр? Я честно не смогу _________________ Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других |
|
| Вернуться к началу |
|
 |
lazutov $a ||= 5;


Зарегистрирован: 30.04.2007 Сообщения: 2094
12361 
|
|
| Вернуться к началу |
|
 |
Веденин $a ||= 5;


Зарегистрирован: 17.05.2007 Сообщения: 878 Откуда: Самара 15245 
|
Добавлено: Чт, 28 Авг, 2008 08:50 Заголовок сообщения: |
|
|
| Цитата: | | Что 0,21с что 0,28 - силно много,да |
для меня 25% очень много, так как у меня есть задачи по обработке пары гигабайт текстовых файлов, это значить комп будет работать значительно дольше
P.S. Во избежания вопросов данные на уже загруженны на локальный комп, так что больше всего времени занимает именно их обработка _________________ Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других |
|
| Вернуться к началу |
|
 |
Alek$ $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>
уверены, что сможете просто и быстро написать регуляр? Я честно не смогу |
Поэксперементирую минут десять и смогу  _________________ Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB3 [Russian]
Антисоциальный блог |
|
| Вернуться к началу |
|
 |
lazutov $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р и дешевле - в ЛС |
|
| Вернуться к началу |
|
 |
uforum $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;
Помогите пожалуйсто с меня монетки  _________________
FireCore build 1018 - добавлено столько всего и изменено что несчесть.
Это почти готовый реализ нехватает только компонента установки ботов
http://uforum.org.ua/
Всё про ОС в широком формате
http://fccms.hmarka.net/
Мой блог |
|
| Вернуться к началу |
|
 |
lazutov $a ||= 5;


Зарегистрирован: 30.04.2007 Сообщения: 2094
12361 
|
|
| Вернуться к началу |
|
 |
uforum $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/
Мой блог |
|
| Вернуться к началу |
|
 |
Веденин $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=& _________________ Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других |
|
| Вернуться к началу |
|
 |
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;


Зарегистрирован: 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/
Мой блог |
|
| Вернуться к началу |
|
 |
|
Powered by phpBB © 2001, 2005 phpBB Group
|