Не удается перенаправить на следующую страницу - PullRequest
0 голосов
/ 26 апреля 2011

Я использую Win XP OS и XAMPP. Я использовал Eclipse в качестве редактора. В Eclipes мне не удалось перенаправить следующую страницу, поэтому я установил Zend Development Environment.

Теперь и у меня такая же проблема.

Мой код

HomePage.php

<html>
<body>
<form name="Form1" id="FormId" action="Welcome.php" method="post">
    name : <input type="text" name="txtName">
    Phone Number : <input type="text" name="txtPnum">
    <input type="submit" name="SubmitIt" value="Submit It">     
</form>
</body>
</html>


And Welcome.php is

<?php
    ob_start(); 
    session_start();    
    if(!($_SESSION['UName']))
    {
        $_SESSION['UName']=$_POST['txtName'];
    }
    if(!($_SESSION['Ph Num']))
    {
        $_SESSION['Ph Num']=$_POST['txtPnum'];
    }
?>
<html>
<body>
Welcome <?php   
    if(isset($_SESSION['UName']))
    {
        echo  $_SESSION['UName'];
    }
    else
    {
        echo "Session not set<br/>";    
        echo "{$_SESSION['UName']}";        
        echo "The session contains <br>";
        print_r($_SESSION);
    }           
    ?>
</body>
</html>

Работает нормально (перенаправление на следующую страницу) в браузере, но не работает в режиме отладки. Как в Eclipse, так и в среде разработки Zend.

Вместо того, чтобы показывать содержимое следующей страницы, оно показывает имя страницы (в моем примере Welcome.php).

Нужно ли мне устанавливать какие-либо другие дополнительные программы или сам код, работающий .... В чем проблема. Пожалуйста, предложите мне.

Заранее спасибо ....!

Ответы [ 2 ]

2 голосов
/ 26 апреля 2011

какая часть должна сделать перенаправление, я не вижу никакого заголовка ('Location: redirect.php') или чего-то еще

и почему вы используете ob_start () здесь.

вы не освободили выходной буфер add ob_get_clean (); в конце

<?php
    ob_start(); 
    session_start();    
    if(!($_SESSION['UName']))
    {
        $_SESSION['UName']=$_POST['txtName'];
    }
    if(!($_SESSION['Ph Num']))
    {
        $_SESSION['Ph Num']=$_POST['txtPnum'];
    }
    ob_end_flush();
?>
<html>
<body>
Welcome <?php   
    if(isset($_SESSION['UName']))
    {
        echo  $_SESSION['UName'];
    }
    else
    {
        echo "Session not set<br/>";    
        echo "{$_SESSION['UName']}";        
        echo "The session contains <br>";
        print_r($_SESSION);
    }           
    ?>
</body>
</html>
0 голосов
/ 26 апреля 2011

попробуйте добавить это в конец вашего кода, я почти уверен, что это потому, что вы не освобождаете выходной буфер, хотя я думаю, что он должен был сделать это автоматически

echo ob_get_clean();

Обновление:

Я не совсем уверен, почему вы используете здесь переменную $ _SESSION, но если вы хотите решить проблему, вы можете использовать, например, $ uname вместо $ _SESSION ['UName'];

Welcome.php

<?php // at the beginning of your file, no spaces or newline
    session_start();
    $uName=$_POST['txtPnum'];
    $txtPnum=$_POST['txtPnum'];
    $_SESSION['UName'] = $uName;
    $_SESSION['PhNum'] = $uName;
?>
<html>
<body>
Welcome <?php echo  $_SESSION['UName']; ?>

</body>
</html>

вы избавляетесь от запуска ob, так как вы все еще отлаживаете свой код. и попробуйте один шаг за раз. Желаю вам хорошего взгляда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...