В PHP - sleep(); & ты спишь(); не работает должным образом. Кроме того, возникают проблемы при входе в систему с помощью цикла

У меня 2 проблемы. Вот мой сценарий.....

<?php

   echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";
echo "<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\">";
echo "<head>";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />";
echo "<link href=\"/library/skin/tool_base.css\" type=\"text/css\" rel=\"stylesheet\" media=\"all\" />";
echo "<link href=\"/library/skin/default/tool.css\" type=\"text/css\" rel=\"stylesheet\" media=\"all\" />";
echo "<meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />";
echo "<title>Etudes</title>";
echo "<script type=\"text/javascript\" language=\"JavaScript\" src=\"/library/js/headscripts.js\"></script>";
echo "</head>";
echo "<body>";

echo "<script type=\"text/javascript\" language=\"JavaScript\">";
echo "focus_path = [\"eid\"];";
echo "</script>";

echo "<form id=\"form\" method=\"post\" target='_blank' action=\"www.xxxxx.com" enctype=\"application/x-www-form-urlencoded\">";
echo "<table border=\"0\" class=\"loginform\" summary=\"layout\">";         
echo "<label for=\"eid\">User id</label>";                                      
echo "<input name=\"eid\" id=\"eid\"  type=\"text\" value=\"USERNAME\"/>";                                      
echo "<label for=\"pw\">Password</label>";

$pass1 = "0";
$pass2 = "0";
$pass3 = "0";
$pass4 = "0";

set_time_limit(0);

for($i = 0; $i < 2; $i++)
{
$pass = $pass1.$pass2.$pass3.$pass4;

echo "$pass";

echo "<input name=\"pw\" id=\"pw\"  type=\"password\" value=\"$pass\"/>";

echo "<script language=\"Javascript\" type=\"text/javascript\">";

echo "document.forms[\"form\"].submit();";

echo "</script>";

   $pass4 = $pass4 + 1; 

if($pass4 == 10)
{
    $pass3 = $pass3 + 1;
    $pass4 = 0;
}
if($pass3 == 10)
{
    $pass2 = $pass2 + 1;
    $pass3 = 0;
}
if($pass2 == 10)
{   
    $pass1 = $pass1 + 1;
    $pass2 = 0;
}
if($pass1 == 10)
{
    echo "Fail";
    break;
}
  usleep(10000000);
  flush();
  ob_flush;
}

?>                      
</table>                        
</form>                 

</table>

</body>
</html>

////////////////////////////////////////////////// ///////////////

Проблема 1) Я попробовал usleep() и sleep(), сначала он работал несколько раз, выполнил файл, затем задержал время, затем выполнил, затем задержал, и т. Д. Но после 3-го раза это не сработало.

Проблема 2) Если я захожу на "www.xxx.com" без цикла, он работает просто отлично, но когда я помещаю его в цикл, например (допустим, пароль 0002): Логин: ИМЯ ПОЛЬЗОВАТЕЛЯ Пароль: 0000

Неправильный логин!

Логин: USERNAME Пароль: 0001

Неправильный логин!

Логин: USERNAME Пароль: 0002

Неправильный логин!

.. все еще дает мне неверный логин! Любая помощь будет принята с благодарностью:) Спасибо.

1 ответ

Решение

Проблема 1) Я думаю, вы достигли максимального времени выполнения, настраиваемого ограничения, которое PHP накладывает на сценарии. PHP-скрипты обычно не являются долгоживущими программами. Они предназначены для быстрого выполнения: один просмотр страницы, один сценарий, так что в качестве меры безопасности (предотвращая атаки типа "отказ в обслуживании") сценарии, которые живут дольше, скажем, 60 секунд, просто прерываются. Проверьте ваш php.ini для этого значения конфигурации.

Проблема 2) Вы закомментировали часть вашего скрипта "submit" и проверили вывод? Я думаю, что ваша программа печатает начало формы только один раз, а затем попробуйте напечатать остальную ее часть 9999 раз. Кроме того, он будет работать только в первый раз, потому что, если вы отправите форму, браузер просто покинет вашу страницу (и ваш сценарий) и не сможет отправить ее во второй раз.

Вы должны использовать CURL для получения ответа от внешнего сайта.

Другие вопросы по тегам