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

出于某种原因,我的代码只输出了“p3”和“p4”两次。我想知道是否有人能指出它重复的原因,我将不胜感激。下面是一个错误示例(如上所述,这仅适用于p3和p4,p1和p2工作正常)

这是我的密码:

index.php-

 <?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, '');
    }
    ?>