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 :: Загрузка изображений на сайт
Покинул форум
Сообщений всего: 183
Дата рег-ции: Авг. 2007
Помог: 0 раз(а)
У меня есть поле "Название" и поле "Файл".
Название не должно превышать 25 символов. Можно вводить русский и анлийские буквы, пробел и тире.
Файл должен загружался на сайт методом POST и при этом размер файла не должен превышать 5 кб и быть форматов .gif, .jpg.
И еще:
Как добавлять изображение (ссылку на изображение) в бд и при выводе что бы оно отображалась, а не его ссылка.
Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2007 Откуда: Планета сокровищ
Помог: 0 раз(а)
[+]
evgenijj, гений, точно. А я создавал в БД обычный линк, т.е. через который изображение открывается и технический линк, через который это изображение удолялось. Надо бы потом все переписать
Andrey5555
Отправлено: 05 Ноября, 2007 - 16:42:37
Частый гость
Покинул форум
Сообщений всего: 183
Дата рег-ции: Авг. 2007
Помог: 0 раз(а)
Регулярное выражение:
if (!eregi ("[а-яa-z0-9 -]$", $title)) die ("<b>Название имеет неверный формат !!!</b>");
Это выражение должно разрешать вводить русские и английские символы, но оно разрешает вводить только английские.
Если
if (eregi ("[а-яa-z0-9 -]$", $title)) die ("<b>Название имеет неверный формат !!!</b>");
Это выражение должно разрешать вводить русские и английские символы, но оно разрешает вводить только русские.
if(!eregi("^[-а-яa-z0-9_.]+$",$title))die("Название имеет неверный формат!");
Здесь имя файла допускает русские и латинские буквы, дефис, точку и символ подчеркивания. Я убрал из допустимых символов пробел. И советую исключить русские буквы
if(empty($title))die("<b>Вы не ввели название !!!</b>");
if(strlen($title)> 25)die("<b>Слишком длинное имя !!!</b> ");
mysql_query("SELECT title FROM sections WHERE (title = '$title') LIMIT 1") or die("<b>Раздел с таким названием уже существует !!!</b>");
$image_name=$_FILES['image']['name'];
$image_size=$_FILES['image']['size'];
if(empty($image_name))die("<b>Вы не выбрали изображение !!!</b>");
if($image_size> 5000)die("<b>Размер изображения слишком большой !!!</b>");
if(!ereg("^.+(.gif|.jpg)$",$image_name))die("<b>Изображение имеет неверный формат !!!</b>");
mysql_query("SELECT * FROM sections WHERE (image = '$image_name') LIMIT 1") or die("<b>Такое изображение уже существует !!!</b>");
mysql_query("INSERT INTO sections (title,image) VALUES ('$title','$image_name')");
echo"Раздел <b>$title</b> успешно добавлен !!!";
?>
У меня что то неверно в строке 8, но я не знаю что.
В строке 7 тоже что то. Можно вводить только 3 символа русских, а английских до 25 (как и должно быть). Вообще че за прикол с русскими буквами?
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Еще раз - что за ошибку выдает PHP? Если ничего не выдает - выставляем в php.ini
display_errors = On
error_reporting = E_ALL
Зачем используется функция htmlspecialchars()? Ее имеет смысл использовать перед выводом в браузер. Да и используют ее по-другому
$title = htmlspecialchars( $title )
Тут более уместна функция mysql_real_escape_string()
mysql_query("SELECT title FROM sections WHERE (title = '$title') LIMIT 1") or die("<b>Раздел с таким названием уже существует !!!</b>");
НЕПРАВИЛЬНО!!! Функция die будет выполнена только если произошла ошибка при выполнении запроса. Т.к. функцию mysql_real_escape_string() ты не используешь, то это весьма вероятно. Например
$_POST['title'] = "Evgenijj's partition";
Правильно так
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Блин, ну и вопросы у тебя. Я сам с этой проблемой не сталкивался, но слышал о ней. Что-то с кодировками. Эта проблема описана здесь http://phpclub[dot]ru/faq/encodings/encodings4
К сожалению, этот раздел сейчас закрыт на профилактику, но можно посмотреть сохраненную копию на Yandex
Цитата:
Почему после субмита формы все данные приходят в виде И?
Такое происходит, если поля формы заполненны символами, отсутствующими в текущей кодировке страницы. Например, CHARSET у страницы указывает Windows 1252, а в форму вы вводите русские буквы. Браузер не может передать введенное правильно, потому что в указанной кодировке отсутствуют русские символы. Подобное кодирование помогает сохранить ваши данные в том виде, в каком вы их ввели. Символы зашифрованы в кодировке UNICODE. Про дешифрацию смотрите в одном из разделов данного FAQ.
АБВГ будут представлены АБВГ
Длина этой строки - 28 символов. Поэтому три русские буквы проходят проверку, а четыре - нет.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.