Просьба не удалять и не закрывать эту тему. Сюда я буду выкладывать проблемы которые у меня возникли в ходе работы с PHP.
Вот кусок кода:Код:Есть ли смысл в этой записи?$login = mysql_escape_string ( trim ( $_POST[ 'login' ] ) ); $password = mysql_escape_string ( trim ( $_POST[ 'password' ] ) ); $password_copy = mysql_escape_string ( trim ( $_POST[ 'password_copy' ] ) ); $email = mysql_escape_string ( trim ( $_POST[ 'email' ] ) ); if ( (isset ( $login ) && $login != '' ) && ( isset ( $password ) && $password != '' ) && ( isset ( $password_copy ) && $password_copy != '' ) && ( isset ( $email ) && $email != '' ) )Код:Или переменная $login уже существует не зависимо от того , находится что - то в $_POST[ 'login' ] или нет.isset ( $login )
- 09.04.2012 02:54
- Регистрация: 13.02.2012
- Сообщений: 20
- Репутация: 0
- 09.04.2012 03:13
Смысла записи условного цикла if в той подачи, что вы написали вообще нету.... напишите функция по типу такой и пропускаете каждую запись .. если запись = 0 (собираете и потом выводите что борода вы не ввели) ... конечно надо проверять существование пришла ли переменная... смысл проверять пустая ли строка если она не пришла, выведет ошибку.. т.к. потом в функцию усовершенствовать каждую для логина и пароля проверять минимальное коли-во символов...
пришла ли постом переменная и сколько символов и нет ли запрещенных в ней символов....имейл надо проверять есть ли в нем символ @ и перед ним 1-2 буквы.. после него 1-2 буквы.. точка и опять две буквы... и насчет своя тема для своих вопрос это плохое решение.... и выкладыайте желательно полный код, а не кусок, и вопрос очень глупый... надо учиться.. а не просто вопросы задавать
переменная логин уже существует вы же создали ее .. и ей присвоится по умолчания null если сделать такую запись $login; а если сделать запись как вы... то да она будет существовать но скорее всего пустая строка или 0 в ней будет просто
function proverka ($name) {
if (isset ($name and $name != null) {
$name = mysql_escape_string ( trim ( $_POST[ '$name' ] );
}
else $name = 0;
return $name;
}
$login = proverka ($login);
$password = proverka ($password);
$password_copy = proverka ($password_copy);
$email = proverka ($email);Последний раз редактировалось evpatiy; 09.04.2012 в 03:21.
- 09.04.2012 03:37
- Регистрация: 13.02.2012
- Сообщений: 20
- Репутация: 0
То есть как я понял надо проверять регулярными выражениями ( preg_match( ) ), а то что у меня написано это лишний балласт в коде?
- 09.04.2012 09:03
- Регистрация: 06.04.2012
- Сообщений: 32
- Репутация: 4
Присоединяясь к предыдущему посту...
1. Я бы заменил mysql_escape_string() на mysql_real_escape_string() - приучайтесь программировать используя последние модификации встроенных функций, а не их устаревшие варианты. Даже если в вашем, конкретном, случае не подразумевается работа с разными кодировками - такой задел будет неплохой привычкой на будущее.
2. Пароль хранить в не зашифрованном виде (имхо) не комильфо. Используйте $password=substr(md5($_POST['password']),0,9); Т.е каждому паролю будет присвоен хэш в 9 символов длинной - и не нужны никакие проверки валидности вводимых данных, таким образом в ваших паролях будут разрешены любые спец. символы, а в случае взлома базы данных, злоумышленник ровным счетом ничего не сможет сделать с вашими паролями.
3. Больше совет для совсем уж начинающих программистов, тех, кто с формами работает и не имеет опыта в структурировании вывода. Создайте массив ошибок. К примеру, при отрицательных результатах проверки обязательных переменных дописывайте в него ошибку:
//Если переменная не существует или пустая заносим в массив ошибок
if (!isset($_POST['login']) && empty($_POST['login'])) {
$errors=.$erros.'<Li>Вы не указали логин.</Li>';
}
elseif (..проверяем пароль и остальные переменные по аналогии...)
Непосредственно перед записью в базу, текстовый файл или авторизацией проверяйте контрольно на наличие ошибок. Например:
if (empty($errors)) { echo "OK!"; } else { echo $errors; }
4. Preg_match - не используйте, регулярные выражения сложны, жрут больше ресурсов и вообще слишком неуместны для таких вот проверок.
5. Разные данные, нужно проверять разными способами. Цифры, к примеру, проверяйте через intval(); А текст новости, добавляемый через админку, вполне можно проверить используя html_special_chars();
6. Сперва делайте проверку на существование переменной if (isset($login))... затем проверяйте не пустая ли она if (!empty($login))..и только потом режьте длину $login = substr($login,0,20); ну и на последок уже более детальная проверка, к примеру $login = html_special_chars($login);
7. Хоть и по пунктам попытался расписать, уже понимаю, что совсем не структурировано ответил)) Просто набор советов - глядишь кому-то пригодится. - 15.04.2012 17:56
- Регистрация: 13.02.2012
- Сообщений: 20
- Репутация: 0
Здравствуйте, вот написал скрипт добавление файлов на сервер:
HTMLКод:PHP<form action="gallery_add.php" enctype="multipart/form-data" method="post"> <input name="image" type="file" /> <input name="submit" type="submit" value="Отправить" /> </form>
Код:Но он не работает. А точнее файл не загружается на сервер ( вроде бы ). Глобальные переменные $_FILE не создаются вообще, строчка<?php include( 'db.php' ); session_start( ); $max_image_wight = 800; $max_image_height = 600; $max_image_size = 150 * 1024; $dir = '/files/img'; $file_e = array( "gif", "jpeg", "jpg", "png"); if ( !is_uploaded_file( $_FILE[ 'image' ][ 'tmp_name' ] ) ) { echo $_FILE[ 'image' ][ 'error' ]; exit( "Ошибка" ); } if( isset( $_FILE[ 'image' ][ 'tmp_name' ] ) ) { if ( $_FILE[ 'image' ][ 'size' ] > 0 && $_FILE[ 'image' ]['size'] <= $max_image_size ) { $W_and_H = getimagesize( $_FILE[ 'image' ][ 'size' ] ); if ( $W_and_H[ 0 ] <= $max_image_wight && $W_and_H[ 1 ] <= $max_image_height ) { $flag = ''; $dir_w = opendir( $dir ); while( $dir_date = readdir( $dir_w ) ) { if ( $dir_date == date( 'Y:m:d' ) ) { $flag = true; } } if ( $flag ) $dir = $dir_date; else $dir = mkdir( "$dir/".date( 'Y:m:d' ) ); $name = substr( $_FILE[ 'image' ][ 'name' ], 1 + strrpos( $_FILE[ 'image' ][ 'name' ], '.' ) ); if ( in_array( $name, $file_e ) ) { $file_name = date( 'H:i' ).'.'.$name; move_uploaded_file( $_FILE[ 'image' ][ 'tmp_name' ], $dir.'/'.$file_name ); } else { header( 'Location: gallery.php' ); $_SESSION[ 'error' ] = "Неверный формат файла!"; } } else { header( 'Location: gallery.php' ); $_SESSION[ 'error' ] = "Изображение не может быть больше чем 800x600 пикселей!"; } } else { header( 'Location: gallery.php' ); $_SESSION[ 'error' ] = "Некорректный размер файла!"; } } else { header( 'Location: gallery.php' ); $_SESSION[ 'error' ] = "Вы не выбрали изображение для загрузки!" ; } ?>
Код:ничего не выводит. В чём может быть проблема?echo $_FILE[ 'image' ][ 'error' ];
- 25.04.2012 14:09
Проверить загружаются ли файлы можно вызвав var_dump($_FILE) - эта функция выведет вам все данные содержащиеся в массиве. Если массив пустой - значит файлы действительно не грузятся, если все-таки он не пуст, значит вы где-то ошиблись в коде, будем искать
- 26.04.2012 16:43
UPD. Тут был вопрос, есть ли права на запись у директории.
---------- Сообщение добавлено 17:43 ---------- Предыдущее 17:34 ----------
Хотя как вариант, ошибка может быть в этом:
$dir = '/files/img'; заменить на $dir = './files/img'; если папка в той-же директории где сам скрипт или использовать константу $dir = __DIR__.'/files/img';
Если в "корне" $dir = $_SERVER['DOCUMENT_ROOT'].'/files/img';Последний раз редактировалось HiNeX; 26.04.2012 в 16:38. Причина: Ошибся. Увидел в коде проверку..
- 29.04.2012 21:30
- Регистрация: 13.02.2012
- Сообщений: 20
- Репутация: 0
Код:function Image_small( $mini_img_url, $url ) { $max_small_image_height = 100; $max_small_image_weight = 70; $img = imagecreatefromjpeg( $mini_img_url ); $WaH = getimagesize( $img ); $small_img = imagecreatetruecolor( $max_small_image_weight, $max_small_image_height ); $img_src = imagecopyresampled( $small_img, $img, 0, 0, 0, 0, $max_small_image_weight, $max_small_image_heigth, $WaH[ 0 ], $WaH[ 1 ] ); imagejpeg( $img_src, $url ); }
Код:Как это лечится?Warning: getimagesize() expects parameter 1 to be string, resource given in Z:\home\localhost\www\cms\gallery_add.php on line 19 Warning: imagejpeg() expects parameter 1 to be resource, boolean given in Z:\home\localhost\www\cms\gallery_add.php on line 22
- 30.04.2012 02:07
первая трабла изза параметра, сначала картинку сохраняеш потом адрес ее в функцияю, а вы объект картинки передаете
Спасибо сказали:
na9ort(30.04.2012), - 30.04.2012 20:17
- Регистрация: 13.02.2012
- Сообщений: 20
- Репутация: 0
Код:Выводит чёрный квадрат, как лечить?function Image_small( $mini_img_url, $url ) { $max_small_image_height = 150; $max_small_image_weight = 150; $img = imagecreatefromjpeg( $mini_img_url ); $WaH = getimagesize( $mini_img_url ); $small_img = imagecreatetruecolor( $max_small_image_weight, $max_small_image_height ); imagecopyresampled( $small_img, $img, 0, 0, 0, 0, $max_small_image_weight, $max_small_image_heigth, $WaH[ 0 ], $WaH[ 1 ] ); header("Content-type: image/jpeg"); imagejpeg( $small_img ); }
Гуглил, долго гуглил не помогло. С GD всё в порядке.
Тэги топика:
- email,
- expects,
- gallery_add,
- getimagesize,
- home,
- imagejpeg,
- img_src,
- isset,
- line,
- localhost,
- login,
- max_small_image_height,
- max_small_image_weight,
- mini_img_url,
- mysql_escape_string,
- parameter,
- password,
- password_copy,
- proverka,
- resource,
- small_img,
- trim,
- _file,
- _post,
- запись,
- значит,
- массив,
- написать,
- ошибка,
- пароль,
- переменная,
- пришлый,
- проблема,
- проверка,
- проверять,
- пустой,
- сервер,
- смысл,
- файл
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Проблемы с hostingru.net | Хостинг и Серверы | 8 | 12.05.2020 01:22 |
Проблемы с яндексом | Поисковые системы | 10 | 22.01.2012 17:02 |
Проблемы со зрением | Оффтоп и свободные темы | 12 | 15.01.2012 21:16 |
Проблемы с hostingru.net | Прочее | 2 | 25.06.2011 17:08 |
Проблемы с блогом на WP | Софт, скрипты, сервисы | 6 | 27.08.2010 22:32 |