Я пытаюсь написать программу Poker Dice с помощью PHP. Это ниже:PHP-код генерирует дополнительную строку
//Please ignore the session variable and calculation parts of the program...its still incomplete because it does not affect the user interface in this case.
<?php session_start() ?>
<!DOCTYPE html>
<html>
<head>
<title>My Own Poker Dice</title>
</head>
<body>
<center>
<?php
print "<h1>Poker Dice</h1>";
if(!filter_has_var(INPUT_POST, "doNext")){
startGame();
} else{
playGame();
}
function startGame(){
$cash=100;
$_SESSION["cash"]=100;
firstPass();
}
function playGame(){
$doNext=filter_input(INPUT_POST, "doNext");
if($doNext=="firstPass"){
firstPass();
} else if($doNext=="secondPass"){
secondPass();
}
}
function firstPass(){
print <<<HERE
<fieldset>
<legend>
<h3>First pass</h3>
</legend>
HERE;
for($i=0;$i<5;$i++){
$die[$i]=rand(1,6);
print <<<HERE
<form method="post" action="">
<img src="$die[$i].png"/>
<input type="checkbox" name="keepIt[$i]" value="$die[$i].png"/> //keepIt is not directly an array. its a part of making an array. its only an array after you extract it and assign it to an array name.
HERE;
}
print <<<HERE
</fieldset>
<p>
<input type="hidden" name="doNext" value="secondPass"/>
<input type="submit" name="submit-firstPass" value="GO!"/>
</p>
</form>
HERE;
}
function secondPass(){
if(filter_has_var(INPUT_POST, "keepIt")){
$formData=filter_input_array(INPUT_POST);
$keepIt=$formData["keepIt"];
for($i=0;$i<5;$i++){
if(empty($keepIt[$i])){
$keepIt[$i]=0;
}
}
} else{
$keepIt=array(0,0,0,0,0);
}
for($i=0;$i<5;$i++){
if($keepIt[$i]==0){
$die[$i]=rand(1,6);
} else{
$die[$i]=$keepIt[$i];
}
}
print <<<HERE
<fieldset>
<legend>
<h3>Second pass</h3>
</legend>
HERE;
for($i=0;$i<5;$i++){
print "<img src='$die[$i].png'/>";
}
print <<<HERE
</fieldset>
<form>
<p>
<input type="hidden" name="doNext" value="firstPass"/>
<input type="submit" name="submit-secondPass" value="GO!"/>
</p>
</form>
HERE;
}
?>
</center>
</body>
</html>
Моя проблема заключается в том, что функция secondPass()
, которая, как предполагается печатать набор 5 кубиков генерирует дополнительную строку, а именно, в «.png» расширение файлов изображений, которые я использую для представления кубиков. В результате я получаю «image.png.png» вместо «image.png». Если я не проверю флажки в форме, предоставляемой функцией firstPass()
, дополнительное расширение не генерируется, и изображения загружаются нормально. При проверке изображения не отображаются из-за дополнительного расширения. Html, который я просматриваю при просмотре изображений:
<img src="3.png.png"> <!-- this is what I'm talking about -->
<img src="6.png">
<img src="4.png">
<img src="3.png.png"> <!-- checking a check-box results in an extra '.png'-->
<img src="2.png">
Мне нужна ваша помощь, чтобы выяснить, что вызывает эту проблему.
Совет: PHP не случайно добавляет строки, это всегда ошибка в * вашем коде ... * – deceze
Уже один downvote. 1 достаточно. Больше нет. –
Не беспокойтесь о нисходящем, просто попробуйте задать умные вопросы (прочтите [this] (http://www.catb.org/esr/faqs/smart-questions.html)) и продолжайте экспериментировать. –