2017-10-10 103 views
0

我想在preview.php中显示$new_client变量,但我没有得到任何值,如果我将任何其他变量设置为klmn会话,那么它工作正常。哪里不对?

pdf/index.php

<?php 
session_start(); 
if(!isset($_SERVER['HTTP_REFERER'])){ 
    header('location:../error.php'); 
    exit; 
}; 

include("add_client.php"); 
$_SESSION['klnm']=$new_client; 
echo $_SESSION['klnm']; 

pdf/add_client.php

<?php 


if(!isset($_SERVER['HTTP_REFERER'])){ 
    header('location:../error.php'); 
    exit; 
}; 
require("../config.php"); 


$new_client = strtolower($_POST['new-offer']); 

$_SESSION['klnm']=$new_client; 

pdf/preview.php

<?php 
session_start(); 

$klient = $_SESSION['klnm']; 
echo $_SESSION['klnm']; 

我的形式kokpit/index.php文件

<form method="post" action="../PDF/index.php"> 
        <input type="text" name="new-offer"> 
        <button type="submit">Wygeneruj</button> 
      </form> 
+0

您是否检查过'$ _POST ['new-offer']'的值,您是否向'index.php'发出了POST请求? – jeroen

+0

你能告诉我们你的表单吗? –

+0

它在索引中显示正常,但它在preview.php中损坏我不明白为什么 – michal

回答

0

您还没有<button 'type'=submit 'name'=submit ..要测试isset($ _ POST ['submit'])以等待用户输入...测试会话是否已经启动也很有帮助(请参阅下面的代码)避免告示/不可预见的行为:

的index.php:

<?php 
    session_start(); 

    echo 'in INDEX' . '<br />'; 

    if(!isset($_SERVER['HTTP_REFERER'])){ 
     header('location:../error.php'); 
     exit; 
    }; 

    include("add_client.php"); 

    if(isset($_POST['submit'])) 
    { 
    $_SESSION['klnm']=$new_client; 
    echo '<br />' . 'INDEX output - $SESSION[klnm]: ' . $_SESSION['klnm']; 

    echo "<br /> <br /> <a href='preview.php' > go preview </a>"; 
    } 

    ?> 

<form method="post" action="index.php"> 
     <input type="text" name="new-offer"> 
     <button type="submit" name='submit' >Wygeneruj</button> 
     </form> 

add_client.php:

<?php 
if(!isset($_SERVER['HTTP_REFERER'])){ 
    header('location:../error.php'); 
    exit; 
}; 

//require("../config.php"); 
if(isset($_POST['submit'])) 
{ 
echo '<br />' . 'in ADD_CLIENT, adding the client ' . '<br />'; 

$new_client = strtolower($_POST['new-offer']); 

$_SESSION['klnm']=$new_client; 
} 

preview.php:

<?php 
// check if session already started 
if(!isset($_SESSION)) 
{ 
    session_start(); 
} 

echo '<br />' . 'in PREVIEW' . '<br />'; 

$klient = $_SESSION['klnm']; 
echo '$SESSION[klnm] == ' . $_SESSION['klnm']; 

echo "<br /> <br /> <a href='index.php' > back to index </a>"; 
?> 
+0

据我所知,session_start应该位于文档的顶部,所以移动的表单并不是我猜的好动作。另外如何添加名称提交按钮可以帮助我在我的情况?我可以在add_client中显示表单输入,但它在预览中不起作用。另外我可以在add_client中设置$ _SESSION ['klnm'] ='some_test',它将在preview.php中显示得很好,我只有通过会话 – michal

+0

发送的index.php表单值有问题,第一个语句应该是be session_start(); (已编辑),但对于其他问题 - 您无法在preview.php中看到值的原因,是因为您没有按照解释的方式在索引中提交表单提交。 – lovelace

+0

谢谢你的帮助。 – michal