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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Не работает отрицание !isset().

Сообщения:  [1-10]   [11-14] 

 
 автор: Lasar   (11.03.2007 в 10:29)   письмо автору
 
   для: Ziq   (11.03.2007 в 09:51)
 

СПС те огромное разобрался...))

   
 
 автор: simsalabim   (11.03.2007 в 10:07)   письмо автору
 
   для: Lasar   (11.03.2007 в 08:21)
 

if(!isset($_POST['test']) {}

чего же удивительного, если ты сначала присваиваешь переменной значение, а потом выполняешь проверку её на существование.

   
 
 автор: Ziq   (11.03.2007 в 09:51)   письмо автору
 
   для: Lasar   (11.03.2007 в 08:21)
 

Что-то типа вот этого

<?
//  $str - строка для обработки
//  $length - длина
//  $intval - числовое ли это поле
//  Возможно понадобятся еще параметры в зависимости от применения
function proverka($str$length$intval false)
{
  
$str trim($str);
  
$str substr($str0$length);
  if (
$intval == true)
  {
    
$str intval($str);
  }
  else
  {
     
$str addslashes($str);
     
$str htmlspecialchars($str);
     
//... и т.д. в зависимости что надо
  
}

  return 
$str;
}
?>

Применять что-то вроде

<?
$var1 
proverka($_POST['var1'], 255);  //  Текстовое поле с макс. длиной 255 символов
$var2 proverka($_POST['var2'], 12true); //  Числовое поле максимум из 12 цифр.
?>

   
 
 автор: Lasar   (11.03.2007 в 08:21)   письмо автору
 
   для: куч1963   (11.03.2007 в 06:41)
 

что-то я совсем запутался ....(

у меня такая задача.....получить даныые из анкеты и отослать их по почте

в анкете 19 полей ....

как затолкать их вписьмо чтоб форсаи письма был вида:

Имя : Иванов Иван Иваныч.
Возраст : 21 год
Образование : высшие.
.....

И т.д.

На ум приходит тока асациативный масив типа array ('имя' => $name, 'Возраст' => $age) и т.д.
Так вот как сформировать спиок ..ключ + значение и затолкать его в переменную, чтоб потом передать функции mail().

И последние :

Тут Ziq предложил отличный способ фильтрации вводных данных

<? 
if ($_POST['action'] ==1

  
$var1 proverka($_POST['var1']); 
  
$var2 proverka($_POST['var2']); 
//  Функция proverka() выполняет необходимые действия со строками или числами,  
//  например экранирует слэши, убирает html-теги... 
  
  //  Далее проверяем на пустоту 
  
if (empty($var1)) $a_error['var1'] = "Вы не ввели поле 1"
  if (empty(
$var2)) $a_error['var2'] = "Вы не ввели поле 2"
  
//  Теперь в массиве $a_error содержаться все ошибки в человеческом виде,  
  //  которые можно отдать пользователю 

  //  Теперь проверяются особые поля, например правильность ввода email, можно  
  //  было бы и там это сделать, но.... 
  
if (...) $a_error['email']  = "Неправильный email"

  
//  Если ошибок в переданных данных не было, то исполняем сам скрипт 
  
if (count($a_error) == 0
  { 
     
//........... 
  


?>


всё впринципе понятно, кроме функции proverka , пожалкйсто дайте примерчик данной функции где для каждого элементе суперглобального масива будет применятся один и тот же метод фильтраци.... например trim() , htmlspecialchars() и т.д.

Зарание спасибо....

   
 
 автор: куч1963   (11.03.2007 в 06:41)   письмо автору
 
   для: Staglu   (10.03.2007 в 21:22)
 


$test = $_POST['test'];

if (!isset($test)){
print "error!";
exit ();


Код работает, но определяет наличие переменной $test , а она определена, вот и не срабатывает сообщение об ошибке.
Если заменить

$test = $_POST['test'];

if (empty($test)){
print "error!";
exit ();


Будет проверяться имеет ли значение переменная $test
В сумме получается

$error = "";

if (empty($_POST['test'])) $error = "не ввели имя";
if (empty($_POST['adress'])) $error = "не ввели адрес";
//проверка на ошибки
if (!empty($error)) 
{
echo $error;
}
else
{
}


   
 
 автор: Lasar   (11.03.2007 в 05:33)   письмо автору
 
   для: Ziq   (10.03.2007 в 20:53)
 

Немогли бы Вы по подробнее описать функцию proverka , просто я чот непойму в оргументы функции чтовстовлять все элементы суперглобального масива или остовлять пустым...?
Икак работать с ним внутри функции..

Зарание благодарен...

   
 
 автор: Staglu   (10.03.2007 в 21:22)   письмо автору
 
   для: Lasar   (10.03.2007 в 19:04)
 

Попробуйте вот такой код он вроде должен работать.


$test = $_POST['test']; 

if ($test ==  "")

print "error!"; 
exit (); 

   
 
 автор: Ziq   (10.03.2007 в 20:53)   письмо автору
 
   для: Lasar   (10.03.2007 в 20:43)
 

Вот такой код к примеру посмотри

<?
if (!isset($k)) echo "1";

$k "";
if (isset(
$k)) echo "2";

$k null;
if (!isset(
$k)) echo "3";
?>

   
 
 автор: Ziq   (10.03.2007 в 20:52)   письмо автору
 
   для: Lasar   (10.03.2007 в 20:43)
 

Скорее всего все работает. Isset() говорит о том объявлена ли переменная или нет, а не о том заполнена ли она. Т.е. если даже передать пустую строку, то isset() выдаст true, а функция empty() проверяет заполненность... короче просто поэксперементируй и сам поймешь.

   
 
 автор: Lasar   (10.03.2007 в 20:43)   письмо автору
 
   для: Ziq   (10.03.2007 в 20:35)
 

во ..то что надо спс огромное....

да кстати а почему отрицание " ! " не работает.... к примеру с тем же isset i "if (!isset($test)){ echo $error;}" типо того, просто я часто видел подобное применение...?

   

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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