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

Форум PHP

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

 

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

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

тема: Не работает отрицание !isset().
 
 автор: Lasar   (10.03.2007 в 19:04)   письмо автору
 
 


$test = $_POST['test'];

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


не работает отрицание " ! " , мне еадо выводить сообщение об ошибке если поле пустое если заполнено молча выполнять скрипт...

очень надо!!!!

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

Попробуйте так

$test = $_POST['test']; 

if (empty($test))

  print "error!"; 
  exit (); 

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

Поставлю вопрос по другому...

конструкция примерно такая


if (!isset($test) && $test = "" &&  !is_string($test){
echo $error;
exit();
}
if (!isset($test1) && $test1 = "" &&  !is_string($test1){
echo $error;
exit();
}


Есть анкета с 19ю полями для ввода данных, как эффективно проверить корректность вводимых данных до начала выполнения основного кода....?

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

Как-то тяжело все это выглядит...

Не совсем понятно, есть ли принципиальная разница для вас несуществует переменная или она пуста?

Я делаю примерно так

<?
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)
  {
     
//...........
  
}
}
?>

Сама форма выглядит где-то так

<form>
  <input name="var1">
  <input name="var2">
  <input name="action" value="1" type="hidden">
  <input type="submit">
</form>

Action удобно использовать для обработки сразу нескольких форм.

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

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

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

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

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

   
 
 автор: 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";
?>

   
 
 автор: 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 (); 

   
 
 автор: куч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 в 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() и т.д.

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

   
 
 автор: 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 в 10:29)   письмо автору
 
   для: Ziq   (11.03.2007 в 09:51)
 

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

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

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

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

   
Rambler's Top100
вверх

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