Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: помогите с условиями if

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: скрипт не правильно работает
Rus016
Отправлено: 03 Октября, 2008 - 22:36:58
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Начало скрипта
скрипт считывает первого email получателя затем проверяет мой ip адрес с теми что есть в базе данных так как база пуста сохраняем ip адрес в базе и отправляем ему все сообщения - после первой отправки всех сообщений первому email получателю скрипт переходит в начало скрипта считывает следующего emal получателя из базы данных и проверяет в базе данных ip если он есть то меняем ip адрес и переходим в начало скрипта.
Проблема в том что он считывает email при замене ip два раза и получается что отправляет сообщения не каждому из базы данных, а через одного !?!? как сделать что-бы отсылал всем ?!? Заранее спасибо !?!?
схема такая в принципе
CODE (text):
скопировать код в буфер обмена
  1. Начало скрипта
  2.                       берем email одного получателя
  3.                     |
  4.                   2)проверяем свой ip адрес перед рассылкой
  5.                     |
  6.                             проверка ip в базе
  7.                     |
  8.               if ((есть ip в базе) || (нету ip в базе))
  9.                     {
  10.           если нет ip в базе то сохраняем ip в базе
  11.               и отправляем через http
  12.                  все сообщения на
  13.                    на один email
  14.                    и переходим в
  15.                    начало скрита
  16.                     }
  17.                    else
  18.                    {
  19.                   если есть в базе то
  20.                    меняем ip адрес и
  21.                    переходим в начало
  22.                         скрипта
  23.                    }

нужно сделать что-бы после замены ip переходил в пункт 2 что-бы сного не считывал email ! это не спам просто рассылка вакансий с сайта подписчикам !!!

(Отредактировано автором: 03 Октября, 2008 - 22:38:03)

 
 Top
Viper
Отправлено: 04 Октября, 2008 - 00:39:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




if ((есть ip в базе) || (нету ip в базе)) зачем "ИЛИ"? если else подразумевает другое значение.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Rus016
Отправлено: 04 Октября, 2008 - 05:09:31
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




ну а как тогда сделать
 
 Top
Champion Супермодератор
Отправлено: 04 Октября, 2008 - 08:14:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




if есть, то одно; else другое.
условие ((есть ip в базе) || (нету ip в базе)) - такой бред, что я прям удивился даже! Оно всегда будет истиным, если ты к базе подключен
 
 Top
Viper
Отправлено: 04 Октября, 2008 - 11:35:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Цитата:
ну а как тогда сделать


ну можно так
if (есть ip) {
отправить
} elseif (нет ip) {
не отправлять
} else {
какая-то ошибка
}

можно без elseif. это так как вариант


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
valenok Модератор
Отправлено: 04 Октября, 2008 - 12:12:49
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




if (есть ip) {
отправить
} elseif (нет ip) {
не отправлять
} else {
нет базы ? Никогда не выполнится
}


-----
Truly yours, Sasha.
 
My status
 Top
Champion Супермодератор
Отправлено: 04 Октября, 2008 - 12:19:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




valenok пишет:
нет базы ? Никогда не выполнится

Если к базе данных не удалось подключиться, или еще что-то там, то всегда будет false. Если он попадет в блок else, там можно сделать вывод сообщения, что мол, сервис не доступен или что-то такое
(Добавление)
ну или если базы нет просто Улыбка
 
 Top
valenok Модератор
Отправлено: 04 Октября, 2008 - 12:22:17
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




не быть такому. Условие на проверку ip
ip может либо быть, либо не быть. Третьего варианта я не нахожу
даже если нет базы, нет скрипта, или даже если мы все в матрице.


-----
Truly yours, Sasha.
 
My status
 Top
Champion Супермодератор
Отправлено: 04 Октября, 2008 - 12:29:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Ну смотри: например, если мы проверяем так:
CODE (text):
скопировать код в буфер обмена
  1. if (mysql_numrows( mysql_query("select * from table where ip = $ip") ) > 0) {....}
  2. elseif (mysql_numrows( mysql_query("select * from table where ip = $ip") ) == 0) {...}

Если до этого коннект к бд был неудачным, оба условия вернут false, тогда мы попадем во второй else

(Отредактировано автором: 04 Октября, 2008 - 12:36:18)

 
 Top
valenok Модератор
Отправлено: 04 Октября, 2008 - 13:44:14
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Запускай

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if (mysql_num_rows( mysql_query("select * from table where ip = $ip") ) > 0) echo '1';
  3. elseif (mysql_num_rows( mysql_query("select * from table where ip = $ip") ) == 0) echo '2';
  4. else echo '3';


Другой случай это ещё сравнение по типам результата возвращаемого mysql_num_rows


-----
Truly yours, Sasha.
 
My status
 Top
Rus016
Отправлено: 04 Октября, 2008 - 14:32:26
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. error_reporting (E_ALL);
  3. set_time_limit(0);
  4. include "config.php";
  5.  
  6. //1)Берем один email из базы
  7. $email = fopen("$emaillist", "r");
  8. while (!feof($email)) {
  9.     $emailp = fgets($email, 128);
  10.  
  11. //2)Проверяем свой ip
  12. $link = "http://myip.ru/index.php";
  13. $url = @fopen("$link", "r");
  14. $rf = fread($url, 1024); fclose($url); $content = $rf;
  15. preg_match("/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/", $content, $matches);
  16. $ip = $matches[0];print "$ip>>><br>";
  17.  
  18. //3)Проверяем нет ли  ip в базе
  19. $db=mysql_connect($myserver, $mylogin, $mypassword);
  20. mysql_select_db("net");
  21. $sql="SELECT * FROM `netip` WHERE `ip`='".$ip."'";
  22. $result=mysql_query($sql);
  23. $num_results=mysql_num_rows($result);
  24.  
  25. //Если 0 то отправляем сообщения, если 1 то меняем ip
  26. if (($num_results=='') || ($num_results==0))
  27. {
  28.  
  29. //Записываем ip в базу
  30. $db=mysql_connect($myserver, $mylogin, $mypassword);
  31. mysql_select_db("net");
  32. $sql="INSERT INTO `netip` VALUES ('".$matches[0]."')";
  33. $result=mysql_query($sql);
  34.  
  35. //Берем все сообщения из базы
  36. $msg = fopen("$msglist", "r");
  37. while (!feof($msg)) {
  38.     $msgp = fgets($msg, 128);
  39. {
  40. ////////////////////////////////////////
  41. //И производим отправку нескольких сообщений одному email пользователю
  42. //и переходим в 1 пункт скрипта
  43. ////////////////////////////////////////
  44. }
  45. }
  46. }
  47. else
  48. {
  49. ////////////////////////////////////////
  50. //замена ip и переход в 1 пункт скрипта
  51. ////////////////////////////////////////
  52. }
  53. }
  54. ?>

как сделать что-бы он после замены ip переход шел во 2 пункт скрипта !?

(Отредактировано автором: 04 Октября, 2008 - 15:05:06)

 
 Top
Viper
Отправлено: 04 Октября, 2008 - 17:52:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




ну наверное затулить в простенькую функцию пункт 2 и вставить в нужное место в if


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Champion Супермодератор
Отправлено: 04 Октября, 2008 - 19:15:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




valenok пишет:
Другой случай это ещё сравнение по типам результата возвращаемого mysql_num_rows
, ну да, сравнивать надо было конечно ===. Тогда видим в браузере 3
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB