Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Классы, проверка на число
 
 автор: Cookies   (11.05.2010 в 15:57)   письмо автору
 
 

Здравствуйте, участники форума.
На моем сайте существует класс 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 (например, писать ее в БД) не обрабатывая кавычки и прочие символы? Это действительно надежная проверка от возможных атак злоумышленников?

  Ответить  
 
 автор: Саня   (11.05.2010 в 16:35)   письмо автору
 
   для: Cookies   (11.05.2010 в 15:57)
 

> Возникает вопрос: можно ли изменить значение переменной _isL
> до создания класса на языке php?
Можно, если вы объявите её статической.

> Скажите пожалуйста, безопасно ли делать следующую проверку
Если user_id у вас может быть "-.12" или даже "+1.2e-100", то можете спокойно использовать is_numeric() и дальше. А так да, безопасно.

  Ответить  
 
 автор: Cookies   (11.05.2010 в 16:52)   письмо автору
 
   для: Саня   (11.05.2010 в 16:35)
 

>Можно, если вы объявите её статической.

Я думал о static, но не знаю как применять это к классу. Вы можете подсказать на данном примере?

  Ответить  
 
 автор: Саня   (11.05.2010 в 17:02)   письмо автору
 
   для: 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);

  Ответить  
 
 автор: Cookies   (11.05.2010 в 17:08)   письмо автору
 
   для: Саня   (11.05.2010 в 17:02)
 

Спасибо большое за помощь, вы мне очень помогли.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования