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
Форумы портала PHP.SU :: Версия для печати :: Повтор скрипта
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Повтор скрипта

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

1. anemak - 28 Октября, 2011 - 10:04:01 - перейти к сообщению
Всем привет ...

Есть вот такая схема скрипта. Вопрос - как мне вместо exit('error'); возвращаться на начало скрипта и начиная с
PHP:
скопировать код в буфер обмена
  1. foreach($data as $Ключ=>$Значение)

начинать заного оперировать с массивом.

Сама схема:
PHP:
скопировать код в буфер обмена
  1. <?
  2. function Login($name, $pass)
  3. {
  4.         global $user_cookie_file;
  5.         $ch = curl_init();
  6.         curl_setopt($ch, CURLOPT_URL, 'http//:URL');
  7.         curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);
  8.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  9.         curl_setopt($ch, CURLOPT_POST, 1);
  10.         curl_setopt($ch, CURLOPT_POSTFIELDS, 'Имя'.$name.'Пароль'.$pass);
  11.         curl_exec($ch);
  12.         curl_close($ch);
  13. }
  14. function GetPageContent($url)
  15. {
  16.         global $user_cookie_file;
  17.         $ch = curl_init();
  18.         curl_setopt($ch, CURLOPT_URL, $url);
  19.         curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
  20.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  21.         curl_setopt($ch, CURLOPT_TIMEOUT, 15);
  22.         $res = curl_exec($ch);
  23.         curl_close($ch);
  24.         return $res;
  25. }
  26. if (isset($_POST['ok']))
  27. {
  28.         $data = array("Ключ1"=>"Значение1",
  29.                       "Ключ2"=>"Значение2"
  30.                      );
  31. /*---Пошли операции с данными массива---*/
  32.         foreach($data as $Ключ=>$Значение)
  33.         {
  34.                 $name = $_POST['name'];
  35.                 $pass = $_POST['pass'];
  36.                 Login($name, $pass);
  37.                 if ()
  38. /*---Вопрос здесь---*/
  39.                 exit('error1');
  40.                 while ()
  41.                 {
  42.                         foreach ()
  43.                                 if ()
  44.                                 {
  45.                                         if ()
  46. /*---Вопрос здесь---*/
  47.                                         exit('error2');
  48.                                 }
  49.                                 elseif()
  50.                                 {
  51.                                         echo "Вывод информации";
  52.                                 }
  53.                                 else
  54.                                 {
  55.                                         if ()
  56. /*---Вопрос здесь---*/
  57.                                         exit('error3');
  58.                                         }
  59.                                 }
  60.                         }
  61.                 }
  62.         }
  63.         echo "Готово";
  64. }
  65. else
  66. {
  67.         echo"
  68.        <form method=\"post\" action=\"\">
  69.        Логин: <input type=\"text\" name=\"name\" value=\"Имя\" />        Пароль: <input type=\"password\" name=\"pass\" value=\"Пароль\" />        <input type=\"submit\" name=\"ok\" value=\"ok\" />        </form>";
  70. }
  71. ?>
2. DeepVarvar - 28 Октября, 2011 - 10:06:24 - перейти к сообщению
continue Радость
(Добавление)
И понадобится еще: break
3. anemak - 28 Октября, 2011 - 10:14:41 - перейти к сообщению
DeepVarvar пишет:
continue Радость
(Добавление)
И понадобится еще: break


Спасибо, все равно не могу понять куда и как возвращаться.
4. DeepVarvar - 28 Октября, 2011 - 10:23:01 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $arr = array("","","","a","","","","b","","","","","c","d","","","","");
  2. $out = "";
  3. foreach ($arr as $k => $v) {
  4.   if ($v == "") continue;
  5.   if ($v == "c") {
  6.     $out = "$k => $v";
  7.     break;
  8.     }
  9.   }
  10. echo $out;
5. anemak - 28 Октября, 2011 - 11:14:37 - перейти к сообщению
DeepVarvar, Вы наверное не поняли....

У меня изначально есть сразу готовый массив, пустых значений там нет.

В коде 3 места, где при особых условиях скрипт заканчивает работу exit'ом.

Мне нужно в этих местах, скажем, уснуть на 300 секунд - sleep(300); а затем уйти на начало скрипта, и начать обработку массива сначала.

upd. При этом авторизоваться нужно заного тоже.
6. Craken - 28 Октября, 2011 - 11:15:11 - перейти к сообщению
Можешь ч-з goto
7. DeepVarvar - 28 Октября, 2011 - 11:30:00 - перейти к сообщению
Craken пишет:
goto
>= php 5.3
(Добавление)
anemak пишет:
а затем уйти на начало скрипта
continue.
Переделаете скрипт - будет работать.
8. anemak - 28 Октября, 2011 - 11:57:08 - перейти к сообщению
DeepVarvar пишет:
Craken пишет:
goto
>= php 5.3
(Добавление)
anemak пишет:
а затем уйти на начало скрипта
continue.
Переделаете скрипт - будет работать.


Использую 5.3 ...

На счет continue - а как же вложенность циклов? Разве не тот цикл на котором ошибка будет повторяться?
9. DeepVarvar - 28 Октября, 2011 - 12:04:12 - перейти к сообщению
anemak пишет:
Использую 5.3
Это не значит что весь остальной мир уже тоже.
anemak пишет:
а как же вложенность циклов?

break(N);
(Добавление)
http://php.net/manual/ru/control...res.continue.php
(Добавление)
Там тоже вложенность может быть.
10. anemak - 28 Октября, 2011 - 12:21:23 - перейти к сообщению
То есть , например continue (3); перемещается в foreach($data as $Ключ=>$Значение) ?

или нумеровать нужно начинать с места откуда перемещаемся?

И ещё, скрипт продолжить работать с текущими $Ключ и $Значение ? или нужно разрушать массив?

 

Powered by ExBB FM 1.0 RC1