- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Нужно загрузить фото на сервер с проверками, написала такой код, но ничего не выходит, укажите, пожалуйста на ошибки:
if (isset($_FILES['foto'])) {
$foto = $_FILES['foto'];
function isSecurity($foto){
$name = $foto['name'];
$type = $foto['type'];
$size = $foto['size'];
$blacklist = array(".php", ".phtml", ".php3", ".php4");
foreach ($blacklist as $item) {if(preg_match("/$item\$/i", $name))return false;}
if (($type != "image/gif") && ($type != "image/png") && ($type != "image/jpg") && ($type != "image/jpeg"))return false;
if ($size > 800 * 1024) return false;
}
function LoadFoto($foto){
$type = $foto['type'];
$uploaddir = "avatars/";
$name = md5(microtime()).".".substr($type, strlen("image/"));
if(move_uploaded_file($foto['tmp_name'], $uploaddir.$name))
{
setFoto($foto); return true;
}
else return false;
}
function setFoto($name)
{
$result1 = mysql_query ("INSERT INTO obyavleniya (foto) VALUES ('$name')");
}
if (isSecurity($foto)) LoadFoto($foto);
else $message = "Ошибка при загрузке фото";
}
Текст ошибки приведите.
Ничего не пишет, пишется, что все успешно загружено, а на самом деле в базе вместо имени фото - 0, и в нужную директорию фото тоже не загружается. Без проверок все отлично выходит, но мне нужно с проверками и с заменой имени рисунка на латинское с сохранением расширения.
Код конечно уныл как не знаю кто :)
но:
if ($size > 800 * 1024) return false;
return true;
}
так сделайте и всё заработает.
if (isset($_FILES['foto'])) {
$foto = $_FILES['foto'];
function isSecurity($foto){
Функции нужно создавать вне всяких блоков и условии. Это хорошо что ваша функция вызывается в том же блоке, иначе бы скрипт отвалился с ерором. И вы другом месте вы не сможете ее использовать.
foreach ($blacklist as $item) {if(preg_match("/$item\$/i", $name))return false;}
Зачем спец символ конца строки $ заэкранировали? Он у вас будет считаться как обычный символ.
LEOnidUKG, спасибо, исправила, файл в директорию теперь загружается, но без сохранения расширения и в базе опять 0. Вот здесь, чтоли, ошибка:
$name = md5(microtime()).".".substr($type, strlen("image/")); ?
и в базе опять 0
setFoto($foto)
setFoto($name)
setFoto($name)
Это я давно уже исправила, не получается, функция срабатывает до $name = md5(microtime()) (в директории под таким именем сохраняется) дальше - ничего.
А скрипт к БД то хоть подключается?
Так же:
mysql_query ("INSERT INTO obyavleniya (foto) VALUES ('$name')");
вы в phpmyadmin попробовали сами с этим запросом, хоть что-то добавить?
Я так добавляла тексты - все добавляется, училась по урокам Попова - он так добавляет, подскажите другой синтаксис, пожалуйста.
---------- Добавлено 12.09.2012 в 10:58 ----------
Скрипт работает до $name = md5(microtime()) - под таким названием сохраняется в директории, дальше - нет.
В этом сообщении логики вообще нету.
Ещё раз, у вас к БД скрипт подключён, чтобы туда что-то добавлять? Вы реально не знаете что такое phpmyadmin?