|
|
|
| Здравствуйте, участники форума.
На моем сайте существует класс Kernel, отвечающий за проверку авторизации, отображения сраниц и прочих моментов, необходимых для работы проекта.
В конструкторе класса присутствуют следующие строки:
<?php
if($this->_isL) {
$this->isAuth();
}
?>
|
Они отвечает за проверку авторизации. _isL является флагом - нужно ли делать авторизацию.
Переменная объявлена как
<?php protected $_isL = true; ?>
|
На каждой странице класс вызывается
<?php
$objKernel = new Kernel();
?>
| , следовательно, автоматически осуществляется проверка на авторизацию.
Я знаю, что в других языках программирования можно изменять некоторые переменные до создания объекта, в котором они находятся. Возникает вопрос: можно ли изменить значение переменной _isL до создания класса на языке php? Мне охотно не хочется менять на всех страницах метод вызова, добавляя в него флаг проверки.
Еще один вопрос посвящен функции is_numeric().
Скажите пожалуйста, безопасно ли делать следующую проверку:
<?php
if(is_numeric($_POST["user_id"])) {
$user_id = $_POST["user_id"];
}
?>
| ? Можно ли потом спокойно использовать переменную $user_id (например, писать ее в БД) не обрабатывая кавычки и прочие символы? Это действительно надежная проверка от возможных атак злоумышленников? | |
|
|
|
|
|
|
|
для: Cookies
(11.05.2010 в 15:57)
| | > Возникает вопрос: можно ли изменить значение переменной _isL
> до создания класса на языке php?
Можно, если вы объявите её статической.
> Скажите пожалуйста, безопасно ли делать следующую проверку
Если user_id у вас может быть "-.12" или даже "+1.2e-100", то можете спокойно использовать is_numeric() и дальше. А так да, безопасно. | |
|
|
|
|
|
|
|
для: Саня
(11.05.2010 в 16:35)
| | >Можно, если вы объявите её статической.
Я думал о static, но не знаю как применять это к классу. Вы можете подсказать на данном примере? | |
|
|
|
|
|
|
|
для: Cookies
(11.05.2010 в 16:52)
| |
<?
class Kernel {
public static $_isL = true;
// ....
}
Kernel::$_isL = false;
|
<?
class Kernel {
protected static $_isL = true;
public static function setIsl($value) {
self::$_isL = !!$value;
}
// ....
}
Kernel::setIsl(false);
|
| |
|
|
|
|
|
|
|
для: Саня
(11.05.2010 в 17:02)
| | Спасибо большое за помощь, вы мне очень помогли. | |
|
|
|