Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2011, 20:05   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию Регулярные выражения eregi

Приветствую всех форумчан. У меня хостинг с php5, поэтому там нет pregmatch(), но мне надо как-то обезопасить загрузку изображений на сервер. У меня не получается проверить расширение и загрузить файл на сервер. Срабатывает else. Я не пойму в чем ошибка. В гугле все варианты с pregmatch.
На мой взгляд ошибка где-то в условии.
PHP код:

<?php
$dir
="newimages/";
$nameaone=$dir basename($_FILES['one']['tmp_name']);
$namestwo=$dir basename($_FILES['two']['tmp_name']);
$one=basename($_FILES['one']['tmp_name']);
$two=basename($_FILES['two']['tmp_name']);
echo 
"{$_FILES['two']['name']} <br> {$_FILES['one']['name']}";
$_POST['text']=htmlspecialchars($_POST['info']);
if (!empty(
$_POST['text']) and eregi("[A-Za-zА-Яа-я0-9_/\ .jpg]",$_FILES['one']['name']) and eregi("[A-Za-zА-Яа-я0-9_/\ .jpg]",$_FILES['two']['name']) and (move_uploaded_file($_FILES['one']['tmp_name'], "$nameone.gif"))) 
{
Echo 
"Все  в порядке";
}
else
{
echo 
"Error";
}
?>
Буду благодарен за оказанную вами помощь.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 10.02.2011, 20:26   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от _PROGRAMM_ Посмотреть сообщение
У меня хостинг с php5, поэтому там нет pregmatch()
Цитата:
preg_match()

(PHP 3 >= 3.0.9, PHP 4, PHP 5)
Куда ж вы умудрились её деть..?

У вас в шаблонах пробелы перед .jpg - возможно из-за них...

Убирайте поочерёдно условия из if - только так можно найти причину, у вас условия одно лучше другого.

Может вообще прав нет на запись в директорию..?
И вы jpg пытаетесь gif-ом обозвать...
Причин у вас много может быть - код далеко не самый логичный и оптимальный...
Andkorol вне форума Ответить с цитированием
Старый 11.02.2011, 07:24   #3
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию

Цитата:
Может вообще прав нет на запись в директорию..?
И вы jpg пытаетесь gif-ом обозвать...
Нет загружаются только jpg.
--
Вот только заметил. Я же их gif обзываю.
--
Цитата:
preg_match()

(PHP 3 >= 3.0.9, PHP 4, PHP 5)
Почему в php 5.3 он появился. Или он до этого был?
Цитата:
Причин у вас много может быть - код далеко не самый логичный и оптимальный...
Ну с этим я как-то смирился Посоветовать более оптимальный можете?
Спасибо.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 11.02.2011 в 07:28.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 11.02.2011, 09:11   #4
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

Цитата:
preg_match()

(PHP 3 >= 3.0.9, PHP 4, PHP 5)
означает, что он был ещё в 3.0.9, т.е. задолго до 5.3
Проверьте регулярное выражение на правильность. Там ли у вас кскобки стоят?
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 11.02.2011, 11:11   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от _PROGRAMM_ Посмотреть сообщение
Ну с этим я как-то смирился
Совершенно напрасно смирились - учитывая, что ваш код не работает.

Зачем вообще вы в вашем коде используете регулярные выражения - для проверки имени файла?
Что вам даёт эта проверка?

Если вы таким образом пытаетесь выяснить, изображение ли это - то для этого есть более правильные и объективные средства.

Например функция getimagesize()
Andkorol вне форума Ответить с цитированием
Старый 11.02.2011, 11:11   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

И проверьте права доступа - возможно причина в них.

PS: вот ещё одно выражение со странной логикой:
Цитата:
$_POST['text']=htmlspecialchars($_POST['info']);
if (!empty($_POST['text']) and ....
Зачем вводить ещё одну переменную в $_POST...?

Последний раз редактировалось Andkorol; 11.02.2011 в 11:16.
Andkorol вне форума Ответить с цитированием
Старый 12.02.2011, 13:22   #7
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию

Спасибо за вашу помощь.
Цитата:
Зачем вводить ещё одну переменную в $_POST...?
Форма другая была. Я скрипт поправлять начал и... Возникла такая ситуация. Попробую использовать pregmatch. Функция getimagesize() определяет размер изображения. Как узнать с помощью этой функции, что это не изображение?

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 12.02.2011, 13:49   #8
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию

Цитата:
Если вы таким образом пытаетесь выяснить, изображение ли это - то для этого есть более правильные и объективные средства.

Например функция getimagesize()
Спасибо. Я исправил. Заработало!

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
регулярные выражения Farrel PHP 3 06.02.2011 18:43
Регулярные выражения Dima_D Общие вопросы Delphi 0 11.08.2010 21:16
Регулярные выражения ACE Valery PHP 5 14.10.2009 11:37
регулярные выражения wyvern PHP 3 09.04.2009 22:15
Регулярные выражения Adamant Общие вопросы C/C++ 1 26.11.2007 19:44