Вот код php
if(isset($_GET['id'])) {
//do something
} else {
redirect('index.php'); //redirect is a function
}
Теперь, если идентификатор установлен (например: index.php? Id = 12) тогда действие выполняется, но если идентификатор не установлен (например, index.php? Id =), это показывает ошибку, как ее преодолеть ... ??
Как определить, что id является целым числом, а это не так? пусто, а затем выполните определенное действие ....
Отредактировано
Спасибо всем за ответы, но я все еще получаю эту ошибку ...
if(isset($_GET['id'])) { // I implemented all these codes but still....
$user= User::find_by_id($_GET['id']);
// Database Classes Fetches user info from database
}
else {
redirect('index.php'); //redirect function
}
Если идентификатор равен 1 или больше 1, скрипт выполняется прекрасно. (index.php? id = 1)
Но id я установил id как отмечающий, что я получаю ошибку i..e index.php? id =
Код должен автоматически перенаправлять пользователя на страницу index.php вместо показывая ошибку .....
ОШИБКА: сбой запроса к базе данных: в синтаксисе SQL есть ошибка; адресное пространство процесса (изнутри самого процесса, посредством mprotect ()). Под «каждой страницей» я имею в виду каждую страницу ...
Мне интересно, есть ли способ защитить каждую запись в Linux?
адресное пространство процесса (изнутри самого процесса, посредством
mprotect ()
). Под «каждой страницей» я имею в виду каждую страницу
адресное пространство процесса, которое может быть записано обычным
программа работает в пользовательском режиме - так, текст программы, константы,
глобалы и куча - но я был бы счастлив только с константами,
глобалы и куча. Я не хочу защищать от записи стек - это
кажется плохой идеей.
Одна проблема в том, что я не знаю, с чего начать защиту от записи
Память. Глядя на / proc / pid / maps
, где показаны разделы памяти
в использовании для данного PID, они всегда, кажется, начинаются с адреса
0x08048000
, с текстом программы. (В Linux, насколько я могу судить,
память процесса выложена с текстом программы на
снизу, затем константы выше этого, затем глобалы, затем куча, затем
пустое пространство разного размера в зависимости от размера кучи или
стек, а затем стек, растущий вниз от верхней части памяти в
виртуальный адрес 0xffffffff
.) Есть способ узнать, где находится верх
куча (вызывая sbrk (0)
, которая просто возвращает указатель на
текущий «перерыв», т. е. вершина кучи), но на самом деле не способ
скажите, где начинается куча.
Если я попытаюсь защитить все страницы от 0x08048000
до перерыва, я
в итоге получаю mprotect: Невозможно выделить память
ошибка. Я не знаю, почему mprotect
будет
в любом случае выделять память - и Google не очень помогает. Есть идеи?
Кстати, причина, по которой я хочу это сделать, заключается в том, что я хочу создать список всех страниц, которые записываются во время запуска программы, и способ, которым я могу придумать, это защитить все страницы от записи, пусть любая попытка записи вызовет ошибку записи, затем осуществите запись обработчик ошибок, который добавит страницу в список, а затем удалит запись защита. Я думаю, что я знаю, как реализовать обработчик, если бы я только мог выяснить, какие страницы защищать и как это сделать.
Спасибо!