Условия задачи здесь
Решил попрактиковаться тоже. В 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() ) |