Написал быдло код) Посмотрите насколько уязвим и если не сложно, напишите что исправить, чтоб в сл. раз знал как правильно написать =) Заранее спасибо. PHP: <? Header("Content-Type: text/html; charset=utf-8"); $close="close"; if ($_GET[id] == $close) { SetCookie("login","", time() + 3600); SetCookie("pass","", time() + 3600); header('Location: /admin.php'); exit(); } include "config.php"; $log=$_POST['login']; $pass=md5($_POST['pass']); if(!empty($log) and !empty($pass)) { SetCookie("login",$log, time() + 3600); SetCookie("pass",$pass, time() + 3600); header('Location: /admin.php'); exit(); } $logged=$_COOKIE['login']; $passed=$_COOKIE['pass']; $query = mysql_query('SELECT * FROM `users`'); $myrow = mysql_fetch_array($query); $gogo=$myrow['pass']; if ($gogo !== $passed) { die( " <form action='' method='post'> login:<br><input type='text' name='login' class='user'><br> pass:<br><input type='password' name='pass' id='pass' class='user'> <p><input type='submit' value='Vstoupit' class=''></p> </form> "); } echo "<a href=/admin.php?id=close>Odhlásit se</a>"; $result=mysql_query('SELECT * FROM `zakazy`'); echo "<form action='' method='POST'>\n"; echo "<table border='1' width='100%' cellpadding='5'>"; echo "<th>Jmeno</th><th>e-mail</th><th>tel. číslo</th><th>Ostátní udáje</th>"; while ($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['jmeno'] . "</td>" . "<td>" . $row['mail'] . "</td>" . "<td>" . $row['tel'] . "<td>" . $row['opravit'] . "</td>" . "<td>" . "<input type=" . "'" . "checkbox" . "' " . "name=" . "'" . "zakaz" . "' " . "value=" . "'" . $row['id'] . "'" . ">" . "</td>"; echo "\n</tr>"; } echo "\n</table>\n"; $checkit=$_POST['zakaz']; if (isset($checkit)) { $checkit=mysql_real_escape_string($checkit); $result=mysql_query('DELETE FROM `pcrepair1`.`zakazy` where `zakazy`.`id`='. (int)$checkit); echo "<meta http-equiv='Refresh' content='0; URL='>"; } ?> <select> <option name="smazat">Smazat</option> <option name="zmenit">Zmenit</option> </select> <input type="submit" value="pouzit"> </form>
Вместо этого: HTML: echo "<meta http-equiv='refresh' content='0; url=/admin.php'>"; мне кажется лучше использовать PHP: header('Location: /admin.php');
Сделаю. Ага, просто проблема была с заголовками, вылетала ошибка, вот я и http редирект ставил, теперь все норм. Поставил header
Спасибо, не знал что он там нужен, для чего ? Немного изменил главный пост, переписал редирект и добавил (int)
Да и в начале скрипта error_reporting(0); Это не троллинг, там раскрытие путей возможно. Можешь просто фильтровать input на массивы. Например, так: PHP: foreach(array_merge(array_values($_GET), array_values($_POST), array_values($_COOKIE)) as $inp) { if(is_array($inp)) echo '<img src="http://static1.fjcdn.com/thumbnails/comments/Haha+I+lol+d+_f7cbf6c099fe2e08fa1976f591ab21b6.jpg"></img>'; exit; } Код должен находится в начале скрипта.
Всем дарова в этом треде ) Как-бы еще не помешало бы в сааамом начале ob_start(); и в сааамом конце ob_end_flush(); - ты просто в скрипте куки ставишь, хедеры посылаешь - может быть ошибка без этих функций.
Даже не знаю что это, почитаю. Не знаю зачем это, читал что это буферизация, при этом в комментариях было написано что загр. стр. при этом не ускорится.
Ясное дело, что не ускорится. "Refresh content=0" - это вообще огонь, да еще и в конце скрипта. Для мониторинга БД лучше использовать постоянный цикл, - это если забыть про стандартные средства управления БД.
Это какбе не для ускорения ради. Смотри, любой ответ сервера состоит из двух кусков - шапки и тела. Вот шапка идет в начале (что следует из названия), а потом идет тело. Все куки, редиректы и прочее передаются в шапке. То есть страница составляется пхп таким образом, что сперва формируется шапка (раз она в начале), а потом дописывается тело. И если ты уже начал выдавать куски "тела", то в шапку записывать (передавать куки, редиректить и прочее) - уже нельзя. Точнее можно, но тогда нужно юзать данные функции буферизации. С ними это не проблема, с ними можно редактировать шапку в любом месте.