【问题标题】:PHP Display single value from session arrayPHP显示会话数组中的单个值
【发布时间】:2017-06-20 01:56:26
【问题描述】:

我目前有一个 PHP 表单供我们的合作伙伴注册报价。用户登录后,他们将被带到报价单的开头。我希望用户的名字自动显示在第一个表单字段中。

用户的会话信息包括一个值数组;其中一个是 firstName 值。这是我希望在用户登录时在第一个字段中显示的值。

当我尝试加载页面时,我收到一个错误,而不是用户的名字。

这是我得到的错误:
通知:未定义索引:C:\wamp64\www\quote_generator\quote_tool.php 中的用户在第 77

这是更新后的页面代码:

<?php
    require("config.php");
    if(empty($_SESSION['user'])) 
    {
        header("Location: index.php");
        die("Redirecting to index.php"); 
    }
?>

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Quoting Tool </title>
    <meta name="description" content="Teo partner quote generator tool">
    <meta name="Kenneth Carskadon" content="www.kencarskadon.com">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- CSS -->
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:400,100,300,500">
    <link rel="stylesheet" href="assets/css/bootstrap.min.css" media="screen">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/3.1.3/css/bootstrap-datetimepicker.min.css">
    <link rel="stylesheet" href="assets/css/font-awesome/css/font-awesome.css">
    <link rel="stylesheet" href="assets/css/form-elements.css">
    <link rel="stylesheet" href="assets/css/datepicker.css">
    <link rel="stylesheet" href="assets/css/style.css">
    <style>
        body {
            background: url("assets/images/backgrounds/background.jpg") no-repeat fixed center;
            background-size: cover;
        }
    </style>
</head>
<body>

<!-- Top menu -->
    <nav class="navbar navbar-inverse navbar-no-bg" role="navigation">
        <div class="container">
            <div>
                <a class="navbar-brand" href="#">
                    <img src="assets/images/logo/Teo%20Logo%20White.png" class="img-responsive" id="teo-logo">
                </a>
            </div>
        </div>
    </nav>

    <!-- Top content -->
    <div class="top-content">
        <div class="inner-bg">
            <div class="container form-container">
                <div class="row">
                    <div class="col-sm-8 col-sm-offset-2 text">
                        <h1><strong>Teo</strong> Partner Quote Generation Form</h1>
                    </div>
                </div>
                <div class="row">
                    <div class="col-sm-8 col-sm-offset-2 form-box">
                        <form role="form" action="" method="post" class="registration-form">
                            <!-- Fieldset 1: Partner Information -->
                            <fieldset>
                                <div class="form-top">
                                    <div class="form-top-left">
                                        <h2>Partner Information</h2>
                                        <h3>Tell us who you are</h3>
                                    </div>
                                    <div class="form-top-right">
                                        <img src="assets/images/icons/partner_info.png" class="form-icon">
                                    </div>
                                </div>
                                <div class="form-bottom">
                                    <div class="form-group">
                                        <input type="text" name="form-partner-name" placeholder="Partner name" class="form-partner-name form-control" id="form-partner-name" 
                                               value="<?php echo $_POST['user']['firstName']?>">
                                    </div>
                                    <div class="form-group">
                                        <select name="partner-level" type="text" title="Select partner level" class="form-control" id="form-partner-level" >
                                          <option>Select partner level</option>  
                                          <option data-price="34">Platinum</option>
                                          <option data-price="32">Gold</option>
                                          <option data-price="29">Silver</option>
                                        </select>
                                    </div>
                                    <div class="form-group">
                                            <input type="text" readonly="readonly" name="discount-perc" placeholder="Discount(%)" class="form-control" id="form-discount-perc">
                                        </div><br />
                                        <div class="form-group">
                                            <input type="text" name="form-margin-perc" placeholder="Margin(%)" class="form-control" id="form-margin-perc">
                                        </div>
                                    <br /><br />
                                    <button type="button" class="btn btn-next">Next</button>
                                </div>
                            </fieldset>

                            <!-- Fieldset 2: Quote Information -->
                            <fieldset>
                                <div class="form-top">
                                    <div class="form-top-left">
                                        <h2>Quote Information</h2>
                                        <h3>Tell us about your customer</h3>
                                    </div>
                                    <div class="form-top-right">
                                        <img src="assets/images/icons/partner_info.png" class="form-icon">
                                    </div>
                                </div>
                                <div class="form-bottom">
                                    <div class="form-group">
                                        <input type="text" name="form-customer-name" placeholder="Customer name" class="form-customer-name form-control" id="form-customer-name">
                                    </div>
                                    <div class="form-group">
                                        <input type="text" name="form-quote-number" placeholder="Quote Number" class="form-quote-number form-control" id="form-quote-number">
                                    </div>
                                    <div class="form-group">
                                        <input  type="text" name="form-incentive-exp" placeholder="Incentive Expiration Date"  class="teo-datepicker">
                                    </div>
                                    <div class="form-group">
                                        <input  type="text" name="form-proposal-exp" placeholder="Proposal Expiration Date"  class="teo-datepicker">
                                    </div>


                                    <br /><br />
                                    <button type="button" class="btn btn-previous">Previous</button>
                                    <button type="button" class="btn btn-next">Next</button>
                                </div>
                            </fieldset>

                            <!-- Fieldset 3: Select Servers -->
                            <fieldset>
                                <div class="form-top">
                                    <div class="form-top-left">
                                        <h2>Select Servers</h2>
                                        <h3>Tell us about the servers you need</h3>
                                    </div>
                                    <div class="form-top-right">
                                        <img src="assets/images/icons/select_servers.png" class="form-icon">
                                    </div>
                                </div>
                                <div class="form-bottom">
                                    <div class="form-group">
                                        <label for="server-select">What kind of server do you need?</label>
                                        <select class="form-control" id="server-type-select">
                                            <option>Please select and option below</option>
                                            <option>Pro Server</option>
                                            <option>Mini Server</option>
                                        </select>
                                    </div>

                                    <div class="form-group">
                                        <label for="server-select">How many servers do you need?</label>
                                        <input type="text" name="form-server-quantity" placeholder="Number of servers" class="form-control" id="form-server-quantity">
                                    </div>
                                    <br /><br />
                                    <button type="button" class="btn btn-previous">Previous</button>
                                    <button type="button" class="btn btn-next">Next</button>
                                    <button type="button" class="btn btn-skip">skip</button>
                                </div>
                            </fieldset>

                            <!-- Fieldset 4: Configure Servers -->
                            <fieldset>
                                <div class="form-top">
                                    <div class="form-top-left">
                                        <h2>Select Servers</h2>
                                        <h3>Tell us about the servers you need</h3>
                                    </div>
                                    <div class="form-top-right">
                                        <img src="assets/images/icons/select_servers.png" class="form-icon">
                                    </div>
                                </div>
                                <div class="form-bottom">
                                    <div class="form-group">
                                        <label for="server-select">What kind of server do you need?</label>
                                        <select class="form-control" id="server-type-select">
                                            <option>Please select and option below</option>
                                            <option>Pro Server</option>
                                            <option>Mini Server</option>
                                        </select>
                                    </div>

                                    <div class="form-group">
                                        <label for="server-select">How many servers do you need?</label>
                                        <input type="text" name="form-server-quantity" placeholder="Number of servers" class="form-control" id="form-server-quantity">
                                    </div>
                                    <br /><br />
                                    <button type="button" class="btn btn-previous">Previous</button>
                                    <button type="button" class="btn btn-next">Next</button>
                                    <button type="button" class="btn btn-skip">Skip</button>
                                </div>
                            </fieldset>
                            <div class="btn-logout">
                                <a href="logout.php">Logout</a>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>


    <!-- Javascript -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="assets/js/bootstrap.min.js"></script>
    <script src="assets/js/jquery.backstretch.min.js"></script>
    <script type='text/javascript' src="https://rawgit.com/RobinHerbots/jquery.inputmask/3.x/dist/jquery.inputmask.bundle.js"></script>
    <script src="assets/js/bootstrap-datepicker.js"></script>
    <script src="assets/js/scripts.js"></script>

    <!--[if lt IE 10]>
            <script src="assets/js/placeholder.js"></script>
    <![endif]-->
</body>
</html>

更新:我有一个会话页面,显示当前会话的信息,这些是我正在谈论的表单的结果:

View Image

【问题讨论】:

  • 这似乎不明智:$session = eval("return {$_POST['session']};");。只需使用 $_POST['session']。
  • 你是这个意思吗? $session = eval($_POST['session'];);
  • 我的意思是停止使用 eval。像我在回答中所做的那样引用发布的变量。
  • 如果显示的代码是生产/实时代码,我会非常担心您在 POST 数据上使用 eval,您要求被黑客攻击并被扇耳光。停下来。您几乎需要使用built in $_SESSION superglobal 重写整个会话处理代码。
  • 登录页面(此处未显示)正在使用 $_SESSION 超全局来创建初始会话。上面的代码只是评估会话以获取会话数组。

标签: php forms session-variables


【解决方案1】:

截图说明了这一点。

你应该可以使用

$session['user']['firstName']

正如上面的 cmets 所述,您将希望不再使用具有安全隐患的 eval

【讨论】:

  • 我遇到问题的代码在第 88 行,我需要它来发布用户的名字;不是整个会话。 value="">
  • 按照我的建议做,确保你想要的数组键是'firstName'。
  • 我实际上有一个带有会话打印工具的页面。我已将会话信息的屏幕截图放入上面的主要帖子中。键是“名字”。
  • 我只是在为表单中的 value 属性回显该帖子行吗?
  • 正确。将 `echo("{$session['firstName']}"` 更改为 echo $_POST['session']['user']['firstName']
猜你喜欢
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
  • 2014-07-05
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多