PHP重复输出
出于某种原因,我的代码只输出了“p3”和“p4”两次。我想知道是否有人能指出它重复的原因,我将不胜感激。下面是一个错误示例(如上所述,这仅适用于p3和p4,p1和p2工作正常) 这是我的密码: index.php-PHP重复输出,php,pdo,Php,Pdo,出于某种原因,我的代码只输出了“p3”和“p4”两次。我想知道是否有人能指出它重复的原因,我将不胜感激。下面是一个错误示例(如上所述,这仅适用于p3和p4,p1和p2工作正常) 这是我的密码: index.php- <?php session_start(); if (!isset($_SESSION['p'])) { $_SESSION['p'] = 'p1'; } include('core.php'); include('core2.php'); $s
<?php
session_start();
if (!isset($_SESSION['p']))
{
$_SESSION['p'] = 'p1';
}
include('core.php');
include('core2.php');
$story = new Story;
$action = new Action;
$part = $_SESSION['p'];
?>
<!DOCTYPE HTML>
<html>
<head>
<title>MacBeth Console</title>
<style>
body{
background:black;
color:#2ecc71;
font-family: "Courier New", Courier, monospace
}
.txt{
border:0px;
background-color:black;
color:#2ecc71;
font-family: "Courier New", Courier, monospace
}
input:focus {outline: none; }
</style>
</head>
<body>
<?php
echo 'DEBUG: P_'.$part.' <br />';
if ($_SESSION['p'] == 'p1')
$story->p1();
else
$action->continueStory($part, '');
if (isset($_POST['submit']))
{
$action->ContinueStory($part, $_POST['yourAction']);
}
?>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
<input type="hidden" name="p" value="<?php echo $part; ?>" style="vertical-align:middle;">
<img src="cmd.png"><input type="text" id="input" name="yourAction" class="txt">
<input type="submit" name="submit" value="continue">
</form>
</body>
</html>
麦克白控制台
身体{
背景:黑色;
颜色:#2ecc71;
字体系列:“Courier New”,Courier,monospace
}
.txt{
边界:0px;
背景色:黑色;
颜色:#2ecc71;
字体系列:“Courier New”,Courier,monospace
}
输入:焦点{大纲:无;}
core2.php-
<?php
class Action
{
public function ContinueStory($p, $action)
{
$story = new Story;
if ($p == "p1")
{
$story->p2($action);
}
else if ($p == "p3")
{
$story->p3($action);
}
else if ($p == "p4")
{
$story->p4($action);
}
}
}
?>
您的问题在于:
<?php
echo 'DEBUG: P_'.$part.' <br />';
if ($_SESSION['p'] == 'p1')
$story->p1();
else
$action->continueStory($part, '');
if (isset($_POST['submit']))
{
$action->ContinueStory($part, $_POST['yourAction']);
}
?>
两次。首先是在你的第一个“if else”,其次是在你的“if isset$\u POST”
这应该是最好的方式:
<?php
echo 'DEBUG: P_'.$part.' <br />';
if (isset($_POST['submit']))
{
$action->ContinueStory($part, $_POST['yourAction']);
} else {
if ($_SESSION['p'] == 'p1')
$story->p1();
else
$action->continueStory($part, '');
}
?>
N.B.:为了安全起见,不要在表单操作中使用$\u服务器['PHP\u SELF',,我认为#应该更好
$action->continueStory($part, '');
<?php
echo 'DEBUG: P_'.$part.' <br />';
if (isset($_POST['submit']))
{
$action->ContinueStory($part, $_POST['yourAction']);
} else {
if ($_SESSION['p'] == 'p1')
$story->p1();
else
$action->continueStory($part, '');
}
?>