Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: что делает preg_match?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
android
Отправлено: 18 Марта, 2012 - 12:27:58
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Всем привет, вот код:
PHP:
скопировать код в буфер обмена
  1. if(preg_match('/^[a-zA-Z0-9\_]{3,32}$/', $_POST["login"])) {
  2. return true;
  3. } else {
  4. return false;
  5. }


Он проверяет на корректность логина, я так понял?
 
 Top
OrmaJever Модератор
Отправлено: 18 Марта, 2012 - 12:34:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




да, только можно вот так
PHP:
скопировать код в буфер обмена
  1. return preg_match('/^[a-zA-Z0-9\_]{3,32}$/', $_POST["login"]);


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
android
Отправлено: 18 Марта, 2012 - 14:15:31
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Спасибо, и вот небольшой вопрос с большим кодом ;)

Немогу запустить функцию.

Есть класс в котором нужно запустить функцию с другого класса:

Откуда запустить:
PHP:
скопировать код в буфер обмена
  1.  
  2. class user {
  3.         //xxxxxx
  4.        
  5.         public function __construct(){
  6.                 //xxxxxx
  7.         }
  8.  
  9.         public function auth() {
  10.                 if(empty($_SESSION['login'])) {
  11.                         if(isset($_POST['whet']) == 1) {
  12.                                
  13.                                 $_SESSION['login_auth_err'] = 0;
  14.                                 $login = functions::sql_inc($_POST['email']);
  15.                                 $pass  = functions::sql_inc($_POST['pass']);
  16.                                 if(empty($login) || empty($pass)) {
  17.                                         //header('location: /index.php?=login_err1');
  18.                                         $_SESSION['login_auth_err'] = 1;
  19.                                         die();
  20.                                 }
  21.                                
  22.                                 $pass = md5($pass);
  23.                                 $sql = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE email='$login'"));
  24.                                 if($pass == $sql['pass']) {
  25.                                         //ok
  26.                                 } else {
  27.                                         //err
  28.                                 }
  29.                         }
  30.                 } else {
  31.                         //xxxx
  32.                 }
  33.         }
  34. }
  35.  


вот они:
PHP:
скопировать код в буфер обмена
  1.  
  2. $login = functions::sql_inc($_POST['email']);
  3. $pass  = functions::sql_inc($_POST['pass']);
  4.  


Второй класс:
PHP:
скопировать код в буфер обмена
  1.  
  2. class functions {
  3.         static function sql_inc($d) {
  4.                 $text_to_check = mysql_real_escape_string($d);
  5.                 $text_to_check = strip_tags($text_to_check);
  6.                 $text_to_check = htmlspecialchars($text_to_check);
  7.                 $text_to_check = stripslashes($text_to_check);
  8.                 $text_to_check = addslashes($text_to_check);
  9.                 return $text_to_check;
  10.         }      
  11. }
  12.  
 
 Top
Okula
Отправлено: 18 Марта, 2012 - 14:24:28
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




android, метод sql_inc() класса functions просто ужасен. Как говорится напихал всё что знал.
 
 Top
android
Отправлено: 18 Марта, 2012 - 14:38:14
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Okula Радость Так как решить проблему?
 
 Top
snikers987
Отправлено: 18 Марта, 2012 - 14:38:54
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




Okula пишет:
android, метод sql_inc() класса functions просто ужасен. Как говорится напихал всё что знал.

Ага, экранирует->удаляет теги->преобразовывает спец. симолы->удаляет экранирование->снова экранирует..
(Добавление)
android класс functions подключен?

(Отредактировано автором: 18 Марта, 2012 - 14:41:07)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
android
Отправлено: 18 Марта, 2012 - 14:50:18
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Да подключен
(Добавление)
И еще забыл дописать, а это все дело 2 класса запускаются с главного:

PHP:
скопировать код в буфер обмена
  1.  
  2. class general {
  3.         //xxxx
  4.  
  5.         public function __construct() {
  6.                 session_start();
  7.                
  8. require_once('engine/users.php');
  9. require_once('engine/func.php');
  10.                 $this->user = new user;
  11.                 $this->user->auth();
  12.  
  13. //xxxx
  14.         }
  15.        
  16.         private function test() {
  17.                 return 'Привет я на test';
  18.         }
  19. }
  20.  


Так если писать вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. private function test() {
  3.                 return 'Привет я на test'.functions::sql_inc('sql');
  4. }
  5.  


то все работает....
 
 Top
Opposite
Отправлено: 18 Марта, 2012 - 15:34:07
Post Id



Гость


Покинул форум
Сообщений всего: 109
Дата рег-ции: Март 2012  


Помог: 4 раз(а)




Хотел бы такой вопрос задать ... разве не было бы логичнее вынести аутентификацию за класс в клиентский код? По моему мнению, аутентификация в классе юзверя нарушает приниципы метафоры => нарушает принципы ООП. Грубо говоря, юзверь - это ты, тебя сделали мама и папа, тебя сделал конструктор мамы, но, как ты там делался и как тебя отбирал наш Всевышний, тебе неизвестно, так почему же юзер должен знать, как он был создан?))

(Отредактировано автором: 18 Марта, 2012 - 15:38:38)

 
 Top
android
Отправлено: 18 Марта, 2012 - 15:38:22
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Opposite немного не понял, авторизация и так находится в классе. Или вы имели ввиду функцию в general class?
 
 Top
Opposite
Отправлено: 18 Марта, 2012 - 15:39:14
Post Id



Гость


Покинул форум
Сообщений всего: 109
Дата рег-ции: Март 2012  


Помог: 4 раз(а)




Считай, что это был оффтоп
 
 Top
Okula
Отправлено: 18 Марта, 2012 - 15:45:04
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Используй автоматическое подключение классов, что бы не писать requere внутри класса.
Функции spl_autoload_register() или более простоая функция __autoload()
 
 Top
android
Отправлено: 18 Марта, 2012 - 16:29:10
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




АаАаА руки крюки, неработает!!

general
PHP:
скопировать код в буфер обмена
  1.  
  2.         public function __construct() {
  3.                 session_start();
  4.                 if(!($db_conn = mysql_connect($this->db_host, $this->db_user, $this->db_pass))) $this->error = "Failed connection to database";
  5.                 mysql_select_db($this->db_name);
  6.                 mysql_query("SET NAMES utf8");
  7.                
  8.                 $scan_dir = scandir('engine');
  9.                
  10.                 /*foreach($scan_dir as $f) {
  11.                         if(preg_match('/^[a-zA-Z0-9\_]*\.class\.php$/', $f) && $f != 'general.class.php') {
  12.                                 require_once('engine/'.$f);
  13.                         }
  14.                 }*/
  15.                
  16.                 spl_autoload_register('autoload');
  17.                 function autoload ($className) {
  18.                         $fileName = 'engine/'.$className.'.class.php';
  19.                         include  $fileName;
  20.                 }
  21.  
  22.                
  23.                 user::auth();
  24.                
  25.         }
  26.  
  27.  
 
 Top
Opposite
Отправлено: 18 Марта, 2012 - 16:32:04
Post Id



Гость


Покинул форум
Сообщений всего: 109
Дата рег-ции: Март 2012  


Помог: 4 раз(а)




вывода на страницу нет, надеюсь?
 
 Top
android
Отправлено: 18 Марта, 2012 - 16:34:06
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




на индекс.пхп

include 'general.php';

$q = new general;
echo $q->show();
 
 Top
Opposite
Отправлено: 18 Марта, 2012 - 16:39:59
Post Id



Гость


Покинул форум
Сообщений всего: 109
Дата рег-ции: Март 2012  


Помог: 4 раз(а)




session_start отправляет кукисы, кукисы летят в заголовках, заголовки должны лететь раньше, чем содержимое страницы. Ты изменяешь заголовки после того, как вывел на страницу содержимое.

Грубо говоря, ты сам вырыл себе яму : уж слишком ты много вешаешь на объекты класса user. Сам подумай, что такое user? Это логин, пароль ( возможно ) и остальные данные касающиеся его личности ( icq, skype ), но никак не сессии, не запросы к БД. Я признаюсь, что сам не силен в ООП, но для меня это кажется уже очевидным, что тебе нужно сделать здесь что-то вроде механизма, который будет штопать этих юзеров, грубо говоря делать объекты. Почитай про паттерн "фабрика". Будет полезно Подмигивание
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB