Strict Standards: Resource ID#27 used as offset, casting to integer (27) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#29 used as offset, casting to integer (29) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#30 used as offset, casting to integer (30) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Рандом
ТвойWeb » WebMaster класс » PHP/Perl » Рандом

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

1. starmaster - 14 Июля, 2004 - 05:32:00 - перейти к сообщению
При написании скрипта для угадывания слов (Улыбка) на своём сайте столкнулся со следующей проблемой: каждый раз выбирается новое слово, а прошлое остаётся неугаданным. В целях безопасности у меня один скрипт, который выводит кнопки и который является обработчиком. Вот часть из него:

PHP:
<?
Error_Reporting(E_ALL & ~E_NOTICE);
$filename="test.php";
$strik=fopen($filename,"r");
$string=fread($strik,filesize($filename));
fclose($strik);
$words=explode("::",$string);
$anrand = rand(0, sizeof($words)-1);
$antext = $words[$anrand];
$wordit=$antext;

и так далее...
?>


Так вот, как можно сделать, чтобы новое слово не выбиралось до тех пор, пока не будет отгадано прошлое (то есть не будет равняться выбранному слову в переменной)?
2. TvoyWeb - 14 Июля, 2004 - 05:48:25 - перейти к сообщению
starmaster
Лично я ничего не понял. Хотелось бы посмотреть весь код.
3. starmaster - 14 Июля, 2004 - 06:27:35 - перейти к сообщению
TvoyWeb

Вот весь код (объяснение к нему под кодом):
CODE:
<?
Error_Reporting(E_ALL & ~E_NOTICE);
$filename="test.php";
$strik=fopen($filename,"r");
$string=fread($strik,filesize($filename));
fclose($strik);
$words=explode("::",$string);
$anrand = rand(0, sizeof($words)-1);
$antext = $words[$anrand];
$wordit=$antext;

echo "<form method=post action=script.php>";
echo "<input type=\"text\" name=\"tz\" value=\"$wordit\">";
echo "<button type=\"submit\" name=\"ar\" value=\"a\">А</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"b\">Б</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"c\">В</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"d\">Г</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"e\">Д</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"f\">Е</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"g\">Ё</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"h\">Ж</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"i\">З</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"j\">И</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"k\">Й</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"l\">К</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"m\">Л</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"n\">М</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"o\">Н</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"p\">О</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"q\">П</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"r\">Р</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"s\">С</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"t\">Т</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"u\">У</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"v\">Ф</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"w\">Х</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"x\">Ц</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"y\">Ч</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"z\">Ш</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"ca\">Щ</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"cb\">ь</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"cd\">ы</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"ce\">ъ</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"cf\">Э</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"cg\">Ю</button>";
echo "<button type=\"submit\" name=\"ar\" value=\"ch\">Я</button>";
echo "</form>";

for ($i=0; $i<strlen($wordit); $i++)
{
$arrayz[]=substr($wordit,$i,1);
}
extract($HTTP_POST_VARS);
if(!empty($ar)) {
$hver=$ar;
}
foreach ($arrayz as $mk)
{
if ($mk==$hver)
{
$truew.=$mk;
}
else {$truew.="*";}
}
echo $truew;
?>


Объяснения: Считываем в переменную $string содержимое файла, затем каждое слово кладём в массив (переменная $words). Затем выбираем случайное слово и присваиваем его переменной $wordit. Затем идёт список кнопок с буквами. После этого мы каждую букву выбранного случайного слова вписываем в массив $arrayz[] Переменной $hver мы присваиваем значение нажатой кнопки. Затем проверяем каждую букву массива $arrayz[] на совпадение с нажатой буквой, если совпадение найдено, то высвечивается эта буква ($truew.=$mk), а если нет, то высвечивается звёздочка: $truew.="*"

Вот собственно и всё, но проблема в том, что новое случайное слово будет выбираться каждый раз при нажатии на кнопке.
4. TvoyWeb - 14 Июля, 2004 - 07:06:29 - перейти к сообщению
starmaster
Ну короче так. Многое не понятно, ну да ладно. Главное что ясна суть твоей проблемы! Улыбка
Все правильно в данном случае так и будет! Ведь ты же никак не сохраняешь это выбранное слово!
Воспользуйся сессиями, для передачи выбранного слова дальше скрипту. Делол в том что скрипт выбора слова запускается с каждым нажатием одной из кнопок.
Придется немного переделать скрипт.
Сделай так. Пусть в самом начале скрипт проверит есть ли запись в сессии о выбранном слове, если нет то случайно выбираем слово из массива и записываем его в сессию, например так $_SESSION['wordit']=$wordit;. И дальше все по скрипту. При повторном нажатии на кнопку, скрипт увидит что в сессии есть выбранное ранее слово и уже не будет его искать в массиве. Не забуть в начале файла стартануть сессию. Ну вообщем я думаю понятно.

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0363]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33