Вот еще появился вопрос по этому скрипту: Редириктить то оно редириктит, но не при всех не правильных значениях... Мне нужно, чтобы параперт id принимал только числовые значения, при подстановке каких либо символов он редиректил... в даный момент редириктин при таком запросе: http://localhost/news.php?id=-25 а при http://localhost/news.php?id=25' страница остается в прежнем состояие... можно ли сделать так, чтобы при определенных значениях id редиректило?
Привет, я создаю двуязычную версию сайта, русский и английский. Мне нужно чтобы каждый из них индексировался поисковиками как отдельный сайт. Поэтому я все же решил использовать поддомены. Так вопрос как мне это сделать(?lang=ru перенести на ru.site.com)?
у меня в этом деле опыта небыло, но идея такая появилась допустим такой участок кода <title>".$title."</title> и есть два файла, в одном русский язык в другом анг например в eng.php будет: $title="My Site"; а в rus.php $title="Мой сайт"; и потом в зависимости от того на каком языке должен быть сайт инклудишь тот или иной файл Думаю идея понятна
если просто последовательно соединить то вот PHP: <?php include('../bd.php'); if (isset($_POST['id'])) {$id = $_POST['id'];} if (isset($id)) { $result = mysql_query ("DELETE FROM a WHERE id='$id'"); if ($result == 'true') {echo "<p>del</p>";} else {echo "<p>del</p>";} } else { ?> <form action="del.php" method="post"> <? $result = mysql_query("SELECT title,id FROM a"); $myrow = mysql_fetch_array($result); do { printf ("<p><input name='id' type='radio' value='%s'><label> %s</label></p>",$myrow["id"],$myrow["title"]); } while ($myrow = mysql_fetch_array($result)); ?> <input name="submit" type="submit" value="удалить"> </form> <?php } ?> если не так то объясни как тебе надо
PHP: <? include('../bd.php'); if(!empty($_POST)) { if (isset($_POST['id'])) {$id = $_POST['id'];} if (isset($id)) { $result = mysql_query ("DELETE FROM a WHERE id='$id'"); if ($result == 'true') {echo "<p>del</p>";} else {echo "<p>del</p>";} } else { echo "<p>no =\</p>"; } } else : ?> <form action="del.php" method="post"> <? $result = mysql_query("SELECT title,id FROM a"); $myrow = mysql_fetch_array($result); do { printf ("<p><input name='id' type='radio' value='%s'><label> %s</label></p>",$myrow["id"],$myrow["title"]); } while ($myrow = mysql_fetch_array($result)); ?> <input name="submit" type="submit" value="удалить"> </form> <? endif; ?>
Спасибо! А как сделать, чтоб записался запрос сделаний до редирикта на страницу в которой это записуется? идея такова: при попытке провеления атаки будет редериктить на страницу с сообщением, на которой будут записыватся даные атакующего... зарание спасибо!
вот несколько конкретных решений: №1 тут я просто $id прописал если надо другое сам пропишеш $_post['id'] или $_get['id'] PHP: if (isset($id) && is_numeric($id)){ //обрабатываеш числовое ID вот такое: http://localhost/news.php?id=25' здесь уже не пройдет } else { exit('hello!');// если ID не числовое } №2 вместо(вместе c) is_numeric можно использовать регулярку PHP: if (isset($id) && is_numeric($id) && preg_match("/^[0-9]+$/i",$id)) { //обрабатываеш числовое ID вот такое: http://localhost/news.php?id=25' здесь уже не пройдет } else { exit('hello!');// если ID не числовое } №3 совсем конкретизируем второй вариант: PHP: if (isset($id) && is_numeric($id) && preg_match("/^[0-9]+$/i",$id)) { //обрабатываеш числовое ID вот такое: http://localhost/news.php?id=25' здесь уже не пройдет switch ((integer)$id){ case 1: //если ИД = 1 echo "строка один<br>"; //еще что то делаеш echo "строка два и т.д."; break; case 4: //если ИД = 4 echo "4 строка один<br>"; //еще что то делаеш echo "4 строка два и т.д."; break; default: //если id не равно одному из вушеперечисленных значений Echo"ID is not correct;"; break; } } else { exit('hello!');// если ID не числовое }
KIR@PRO Омг, а еще более извращенно слабо? Можно разбить еще строку на составляющие, а потом каждый знак сравнивать - число это или нет. -m0rgan- PHP: error_reporting(0); include"config.php"; $id=intval($_GET['id'])>0 ? intval($_GET['id']) : 0; // Вся соль тут) if($id) { echo $news; $query = "SELECT * FROM news where `id`='".$id."'"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) : цикл... endwhile; } else {header('Location: heck.php');}
я привел ему пару примеров простой средний и 100500% безопасный вариант p.s. приходится так изощьряться потомучто нет 100% уверенности в том, что в функциях isset(), is_numeric(), preg_match() нет приватных уязвимостей... поэтому я добавил switch
хм странно но почему то при ?id=3 и вообще ?id=(ТОЛЬКО ЧИСЛО) все время редиректит, но когда не число тоже редиректит) ищи ошибку.... вообще не пойму смысла вот этого: ? intval($_GET['id']) : 0 intval() если id не число всеравно вернет 0
Вопросец,какая функция в пхп отвечает за сохранение определенного файла на сервер?(допустим,я подставляю ссылку в запрос,и скрипт сохраняет содержимое ссылке ко мне на винт)
ты как то запутался в одном предложении тебе на винт сервера сохранить надо или всетаки всоего компа(клиента)??
KIR@PRO Все работает, а про число - сильно сомневаюсь, что в БД будут отрицательные ID PHP: $id=intval($_GET['id'])>0 ? intval($_GET['id']) : 0; if($id) { echo '------'.$id.'--------'; } else {header('Location: heck.php');die;}