Условия задачи здесь
Решил попрактиковаться тоже. В php свой стиль только ищу - буду благодарен за справедливую критику и анализ.
PHP |
function check_input($value) |
HTML |
<form name="form1" method="get" action="<?php echo $_SERVER['PHP_SELF'];?>"> Поиск:<br> <input type="text" name="username" value="<?php echo htmlspecialchars($pole1); ?>" ><?php echo $soob1;?> <br> <input type="submit" name="Submit" value="Найти"> <br> </form> <br> <form name="form2" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Регистрация:<br> <input type="text" name="username" value="<?php echo htmlspecialchars($pole2); ?>"><?php echo $soob2;?> <br> <input type="submit" name="Submit" value="Зарегистрироваться"> </form> |
Цитата |
Michael очень "сложно" написал код, то есть не читаемо!!! вот что заметил... 1. Форму лучше отправляй через метод POST. 2. Обрабатывай сразу своей функцией check_input, $_GET $_POST |
PHP |
$poisk = addcslashes($pole1,"\\%_") |
PHP |
mysql_fetch_array() |
PHP |
$query='select * from names order by date desc'; |
PHP |
$query = 'SELECT * FROM `names` ORDER BY `date` DESC'; |
PHP |
(!(isset($_POST['username'])) or(trim($_POST['username'])=='')) |
PHP |
if (empty($_POST['username'])){ |
Цитата (glock18) |
1) функцию check_input я бы посоветовал использовать по-другому и несколько переписать. убирать лишние слеши может понадобиться не только для вставки в базу, но и при любой другой обработке 2)mysql_fetch_array() |
Цитата (twin) |
как будут обрабатываться числовые константы для SQL |
Цитата (twin) |
Использование фигурных скобок вместо конкатенации никак не способствует повышеню читабельности |
Цитата (twin) |
Я не совсем понял, как ты сумел его запустить, но хидер у тебя ругается и правомерно, потому что выше есть вывод |
Цитата (twin) |
Конструкция $query='select * from names order by date desc'; $rez=mysql_query($query); оправдана только тогда, когда за ней идет диагностика. |
Цитата |
Странно, в книге на них особо напирали. |
PHP |
header("Location:{$_SERVER['PHP_SELF']}"); |
Цитата |
но у меня на localhost всегда и так прекрасно работает (куки также) - я думал это устаревшая рекомендация... |
Цитата |
но у меня на localhost всегда и так прекрасно работает (куки также) - я думал это устаревшая рекомендация... |
Цитата |
В разных книгах напирают на разное. Верить не книгам надо, а своим глазам. Просто посмотри по подсветке |
PHP |
header("Location:{$_SERVER['PHP_SELF']}"); |
Цитата |
то есть то, что подсветка синтаксиса на форуме не подстветила строку со скобками, не значит, что она нигде не будет подсвечена. |
Цитата (glock18 @ 29.09.2009 - 13:03) |
тут дело не в error_reporting, а не в output_buffering. |
Цитата (glock18 @ 29.09.2009 - 09:53) | ||||||
1. не согласен. через GET отправляется только поиск, что есть хорошо. 2. не согласен применительно к общему случаю. это только частный случай, когда данные нужно экранировать. скажем экранировать кавычки перед вставкой в файл, а не бд, совершенно излишне. Michael код на самом деле читается достаточно плохо. функцию check_input я бы посоветовал использовать по-другому и несколько переписать. убирать лишние слеши может понадобиться не только для вставки в базу, но и при любой другой обработке. зато экранировать строку может быть излишним.
это плюс. экранирование специальных символов обычно забывается есть защита от xss
эта функция имеет параметр "тип возвращаемого массива". по умолчанию BOTH. попробуй выведи ее результат по print_r и после либо указывай MYSQL_ASSOC|MYSQL_ROW либо используй соответствующую функцию mysql_fetch_assoc|mysql_fetch_row. ПС: одинаковые имена полей в разных формах сбивают несколько. различие только по методу - не очень удобно. |
PHP |
<?php |
HTML |
<form name="form1" method="get" action="<?php echo $_SERVER['PHP_SELF'];?>"> Поиск:<br> <input type="text" name="usernamepoisk" value="<?php echo htmlspecialchars($pole1); ?>" ><?php echo $mess1;?> <br> <input type="submit" name="Submit" value="Найти"> <br> </form> <br> <form name="form2" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Регистрация:<br> <input type="text" name="username" value="<?php echo htmlspecialchars($pole2); ?>"><?php echo $mess2;?> <br> <input type="submit" name="Submit" value="Зарегистрироваться"> </form> |
Код |
php_flag magic_quotes_gpc on php_flag magic_quotes_runtime on |
PHP |
if (!(isset($_POST['username'])) or(trim($_POST['username'])=='')) |
PHP |
$username = !empty($_POST['username'])?trim($_POST['username']:NULL; |
Цитата (twin @ 4.10.2009 - 07:54) | ||||
1) Ну не совсем финальный. С магическими кавычками ты так и не разобрался. Напиши в .htaccess это:
и посмотри, в каком виде выйдут на экран кавычки и апострофы. 2) И второй момент, я уже указывал на него. Вот тут
у тебя прямое обращение к члену массива, которого вполне может и не оказаться. То есть ты в функцию trim() суешь заведомо неопределенную переменную. |
Цитата |
Засунь его сюда и посмотри, как должно быть в идеале |
Цитата |
1) у меня вообще почему то .htaccess никаких корректировок не ввел get_magic_quotes_gpc()===false И я так понимаю runtime можно ж отключать программно(в ini_set) |
Цитата |
Если !(isset($_POST['username'])) вернет true то or(trim($_POST['username'])=='') php не станет вычислять вообще, разве не так? |
Цитата |
Че то не суется... |
Цитата |
нет, не так. интерпретатор должен проверить оба условия, а значит должен выполнить то, что там прописано. |
Цитата |
Michael прав. |
PHP |
$a = 1; |
Цитата (twin @ 4.10.2009 - 10:15) | ||
Нет, не прав. Посмотри на код внимательно. Если переменная неустановлена, то !iset() вернет true, а значит начнет проверяться второе условие. И будет работать с неустановленной переменной. |
Цитата (twin @ 4.10.2009 - 08:49) |
ну попробуй в ini_set |
Код |
php_flag magic_quotes_gpc on php_flag magic_quotes_runtime on |
Цитата |
glock18, ну вот так же: ini_set('magic_quotes_runtime',0); можно же? Все работает. Я читал, что только magic_quotes_gpc нельзя так ставить. |
PHP |
//Определение функций |
HTML |
<form name="form1" method="get" action="<?php echo $_SERVER['PHP_SELF'];?>"> Поиск:<br> <input type="text" name="usernamepoisk" value="<?php echo htmlspecialchars($pole1); ?>" ><?php echo $mess1;?> <br> <input type="submit" name="Submit" value="Найти"> <br> </form> <br> <form name="form2" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Регистрация:<br> <input type="text" name="username" value="<?php echo htmlspecialchars($pole2); ?>"><?php echo $mess2;?> <br> <input type="submit" name="Submit" value="Зарегистрироваться"> </form> |
PHP |
if( get_magic_quotes_gpc() ) |