使用PHP会话显示状态消息 [英] Using PHP session to display status messages

查看:84
本文介绍了使用PHP会话显示状态消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在联系表单上方显示提交状态,因此我的计划是使用会话,但无法正常工作。表单成功提交,并且页面成功重定向回到demo.htm页面(重定向到index2.php后),但没有显示状态消息。



我也打算使用这个会话来在空白字段上显示所需的标签,因为iOS不支持'required'输入标签(巨人注释掉了大块的HTML表单将取代当前的表单字段来处理iOS上的必填字段)。



更新:有一些奇怪的事情与回声....它可能是



输入#1:

 < p>文字在这里< / p> 
< p><?php echo($ _ SESSION ['status']); ?>< / p为H.
< p> Temp< / p>
< p id =status>
<?php
if(isset($ _ SESSION ['status'])){
echo(< br />$ _ SESSION ['status']。<峰; br />中);
unset($ _ SESSION ['status']);
}
?>
< / p>
< p>更多文字< / p>

输出#1:

  Text Here 

Temp

$ _SESSION ['status']。
); unset($ _ SESSION ['status']);}?>

更多文字在这里

输入#2:

 <?php echo strcmp(Hello world !,Hello world!)。< br />;?> 

输出#2:

 ; ?> 

PHP:

 <?php 
session_start();

$ firstName = $ lastName = $ email = $ companyName = $ jobTitle = $ phoneNumber = $ comments =;
$ noErrors = true;

if($ _ POST ['submit']){
if(empty($ _ POST [firstname])){$ _SESSION [nameErr] =需要名字; $ noErrors = false;}
else {$ firstName = $ _POST ['firstname']; }
if(empty($ _ POST [lastname])){$ _SESSION [lastErr] =需要姓氏; $ noErrors = false;}
else {$ lastName = $ _POST ['lastname']; }
if(empty($ _ POST [email])){$ _SESSION [emailErr] =需要电子邮件; $ noErrors = false;}
else {$ email = $ _POST ['email']; }
if(empty($ _ POST [companyname])){$ _SESSION [companyErr] =公司名称是必需的; $ noErrors = false;}
else {$ companyName = $ _POST ['companyname']; }
if(empty($ _ POST [position])){$ _SESSION [jobErr] =需要职务名称; $ noErrors = false;}
else {$ jobTitle = $ _POST ['position']; }
if(empty($ _ POST [number])){$ _SESSION [phoneErr] =需要电话号码; $ noErrors = false;}
else {$ phoneNumber = $ _POST ['number']; }

$ comments = $ _POST ['comments'];

$ header =From:xxxxx.com;
$ to ='xxxxx.com';
$ subject ='演示请求';

$ message =From:\r\\\

名称:$ firstName $ lastName\r\\\

电子邮件:$ email\r\\ \\ n
公司名称:$ companyName\r\\\

职位名称:$ jobTitle \r\\\

电话号码:$ phoneNumber\r\\\

评论:$ comments; $($ noErrors == true)&& mail($ to,$ subject,$ message,$ header)){
$ _SESSION ['status'] =

您的留言已发送!;
header('Location:demo.htm');
} else {
$ _SESSION ['status'] =出错了,请再试一次;
header('Location:demo.htm');
}
exit();
}
?>

HTML:

 <?php 
session_start();
?>
<!DOCTYPE html>< html>
< head> * stuff *< / head>< body>
< p id =status>
<?php
if(isset($ _ SESSION ['status'])){
$ echo $ _SESSION ['status'];
unset($ _ SESSION ['status'];
}
?>
< / p>

< div id =requestADemo >
< p style =line-height:2%; font-size:24px; font-weight:200;>请求演示< / p>
< p样式=line-height:2%; font-style:italic; font-size:13px;> *表示必填字段< / p>

< form method =postaction = index2.php>
<! - p class =demostyle =margin:0;>名字:*< / p>
< input type = ($ _SESSION ['nameErr'])){
$ echo $ _SESSION ['name ='firstname'required>
< span><?php
if nameErr'];
unset($ _ SESSION ['nameErr'];
}
?>< / span>
< p class =demo> Last名称:*< / p>
< input type =namename =lastnamerequired>
< span><?php
if(isset($ _ SESSION ['lastErr'])){
$ echo $ _SESSION ['lastErr'];
unset($ _ SESSION ['lastErr'];
}
?>< / span>
< p class =demo>电子邮件:*< / p>
< input type =emailname =emailrequired>
< span><?php
if(isset($ _ SESSION ['emailErr']) ){
$ echo $ _SESSION ['emailErr'];
unset($ _ SESSION ['emailErr'];
}
?>< / span>
< p class =demo>公司名称:*< / p>
< span>< php
if(isset($ _ SESSION ['companyErr'])){
$ echo $ _SESSION ['companyErr'];
unset($ _ SESSION ['companyErr'];
}
?>< / span>
< p class =demo>职位名称:*< / p>
< inpu t type =namename =positionrequired>
< span><?php
if(isset($ _ SESSION ['jobErr'])){
$ echo $ _SESSION ['jobErr'];
unset($ _ SESSION ['jobErr'];
}
?>< / span>
< p class =demo>电话号码:*< ; / p>
< input type =numbername =numberrequired>
< span><?php
if(isset($ _ SESSION ['phoneErr'] )){
$ echo $ _SESSION ['phoneErr'];
unset($ _ SESSION ['phoneErr'];
}
?>< / span>
< p class =demo>评论:< / p>
< textarea name =commentsplaceholder =Type Hererows =10columns =50><< ; / textarea>
< p class =demo>< input type =submitvalue =Submitname =submit>< / p - >



< p class =demo>姓氏:*< br /><输入类型=namename =lastnamerequired>< / p>
< p class =demo>电子邮件地址:*< br />< input type =emailname =emailrequired>< / p>
< p class =demo>公司名称:*< br />< input type =namename =companynamerequired>< / p>

>< / p>< input type =namename =positionrequired>< / p>
< p class =demo>电话号码:*< br />< input type =numbername =numberrequired>< / p>
< p class =demo>评论:< br />< textarea name =commentsplaceholder =Type Hererows =10columns =50>< / textarea的>< / p为H.
< p class =demo>< input type =submitvalue =Submitname =submit>< / p>
< / form>
< / body>
< / html>


解决方案

HTML页面不会解析PHP数据/通过 .htaccess httpd.conf 或某些类似的服务器级别关联方法告诉它们。

您正尝试在HTML页面中显示PHP SESSION 数据,直到您告诉HTML页面来解释PHP代码。



demo.htm

code>只是一个无法处理PHP的HTML页面,那么您将看到输出(包括所有PHP代码),就好像它只是HTML



示例:



demo.html(来自您的问题): p>


 <?php 
session_start();
?>
<!DOCTYPE html>< html>
< head> * stuff *< / head>< body>
< p id =status>
<?php
if(isset($ _ SESSION ['status'])){
echo $ _SESSION ['status'];
unset($ _ SESSION ['status'];
}
?>
< / p>


这被视为HTML,因此会产生一团乱麻的输出,因为< > 是HTML解析器的开始和结束标签。 我也删除了 $ 来自 echo 语句,因为echo是一个函数而不是变量。



解决方案:



尽管上面给出的链接很有用,但它只是简单地重命名 demo.htm demo.php 来指示服务器将页面解析为PHP页面,您需要更新页面的链接(例如表单动作标签),但这意味着该页面将被服务器正确处理。


I'm trying to display a submission status above my contact form, so my plan is to use sessions, but it's not working properly. The form successfully submits, and the page gets successfully redirected back to the demo.htm page (after it was redirected to index2.php), but no status message is ever diplayed.

I was also going to use the session in order to display required tags on blank fields since iOS doesn't support the 'required' input tag (The giant commented out chunk of the html form will replace the current form fields to handle the required fields on iOS).

UPDATE: There's something strange going on with echo.... Could it be something with the php.ini file (if so, what?)?

Input#1:

 <p>Text Here</p>
<p><?php echo($_SESSION['status']); ?></p>
<p>Temp</p>
<p id="status">
<?php 
    if(isset($_SESSION['status'])){
        echo("<br/>"$_SESSION['status']."<br/>");
        unset($_SESSION['status']);
    }
?>
</p>
<p>More text here</p>

Output #1:

Text Here

Temp

"$_SESSION['status']."
"); unset($_SESSION['status']); } ?>

More text here

Input #2:

<?php echo strcmp("Hello world!","Hello world!")."<br/>"; ?>

Output #2:

"; ?>

PHP:

 <?php
 session_start();

 $firstName = $lastName = $email = $companyName = $jobTitle = $phoneNumber = $comments = "";
 $noErrors = true;

 if($_POST['submit']) {
    if(empty($_POST["firstname"])) {    $_SESSION["nameErr"] = "First name is required"; $noErrors=false;} 
    else {                      $firstName = $_POST['firstname']; }
    if(empty($_POST["lastname"])) {     $_SESSION["lastErr"] = "Last name is required"; $noErrors=false;}
    else {                      $lastName = $_POST['lastname']; }
    if(empty($_POST["email"])) {        $_SESSION["emailErr"] = "Email is required"; $noErrors=false;}
    else {                      $email = $_POST['email']; }
    if(empty($_POST["companyname"])) {  $_SESSION["companyErr"] = "Company name is required"; $noErrors=false;}
    else {                      $companyName= $_POST['companyname']; }
    if(empty($_POST["position"])) {     $_SESSION["jobErr"] = "Job title is required"; $noErrors=false;}
    else {                      $jobTitle = $_POST['position']; }
    if(empty($_POST["number"])) {       $_SESSION["phoneErr"] = "Phone number is required"; $noErrors=false;}
    else {                      $phoneNumber = $_POST['number']; }

    $comments = $_POST['comments'];

    $header = "From: xxxxx.com";
    $to = 'xxxxx.com';
    $subject = 'Demo request';

    $message = "From: \r\n 
        Name: $firstName $lastName\r\n 
        E-mail: $email\r\n 
        Company Name: $companyName\r\n 
        Job Title: $jobTitle\r\n
        Phone Number: $phoneNumber\r\n
        Comments: $comments";

    if(($noErrors == true) && mail ($to, $subject, $message, $header)) {
        $_SESSION['status'] = "Your message has been sent!";
        header('Location: demo.htm');
    } else {
        $_SESSION['status'] = "Something went wrong, please try again";
        header('Location: demo.htm');
    }
    exit();
}
?>

HTML:

<?php
session_start();
?>
<!DOCTYPE html><html>
<head>*stuff*</head><body>
<p id="status">
<?php 
    if(isset($_SESSION['status'])){
        $echo $_SESSION['status'];
        unset($_SESSION['status'];
    }
?>
</p>

<div id="requestADemo">
    <p style="line-height: 2%; font-size: 24px; font-weight: 200;">Request A Demo</p>
    <p style="line-height: 2%; font-style:italic; font-size: 13px;">*indicates required field</p>

    <form method="post" action="index2.php">
        <!--p class="demo" style="margin:0;">First Name:*</p>
            <input type ="name" name="firstname" required>
            <span><?php
                if(isset($_SESSION['nameErr'])){
                    $echo $_SESSION['nameErr'];
                    unset($_SESSION['nameErr'];
                }
            ?></span>
        <p class="demo">Last Name:*</p>
            <input type ="name" name="lastname" required>
            <span><?php
                if(isset($_SESSION['lastErr'])){
                    $echo $_SESSION['lastErr'];
                    unset($_SESSION['lastErr'];
                }
            ?></span>
        <p class="demo">Email:*</p>
            <input type ="email" name="email" required>
            <span><?php
                if(isset($_SESSION['emailErr'])){
                    $echo $_SESSION['emailErr'];
                    unset($_SESSION['emailErr'];
                }
            ?></span>
        <p class="demo">Company Name:*</p>
            <input type ="name" name="companyname" required>
            <span><?php
                if(isset($_SESSION['companyErr'])){
                    $echo $_SESSION['companyErr'];
                    unset($_SESSION['companyErr'];
                }
            ?></span>
        <p class="demo">Job Title:*</p>
            <input type ="name" name="position" required>
            <span><?php
                if(isset($_SESSION['jobErr'])){
                    $echo $_SESSION['jobErr'];
                    unset($_SESSION['jobErr'];
                }
            ?></span>
        <p class="demo">Phone Number:*</p>
            <input type ="number" name="number" required>
            <span><?php
                if(isset($_SESSION['phoneErr'])){
                    $echo $_SESSION['phoneErr'];
                    unset($_SESSION['phoneErr'];
                }
            ?></span>
        <p class="demo">Comments:</p>
            <textarea name="comments" placeholder="Type Here" rows ="10" columns="50"></textarea>
        <p class="demo"><input type="submit" value="Submit" name="submit"></p-->



        <p class="demo">First Name:*<br/><input type ="name" name="firstname" required></p>
        <p class="demo">Last Name:*<br/><input type ="name" name="lastname" required></p>
        <p class="demo">Email:*<br/><input type ="email" name="email" required></p>
        <p class="demo">Company Name:*<br/><input type ="name" name="companyname" required></p>
        <p class="demo">Job Title:*<br/><input type ="name" name="position" required></p>
        <p class="demo">Phone Number:*<br/><input type ="number" name="number" required></p>
        <p class="demo">Comments:<br/><textarea name="comments" placeholder="Type Here" rows ="10" columns="50"></textarea></p>
        <p class="demo"><input type="submit" value="Submit" name="submit"></p>
    </form> 
 </body> 
 </html>

解决方案

HTML pages will not parse PHP data/syntax unless specifically told to via .htaccess, httpd.conf or some similar server level association methods.

You are trying to display the PHP SESSION data within a HTML page, which is not going to happen until you tell the html page to interpret PHP code.

This StackOverflow question gives you clear guides on how to achieve this.

If your demo.htm is just a HTML page with no ability to handle PHP then you will see output (including all the PHP code) as if it was only HTML.

Example:

demo.html (from your question):

<?php
 session_start();
 ?>
<!DOCTYPE html><html>
 <head>*stuff*</head><body>
<p id="status">
 <?php 
 if(isset($_SESSION['status'])){
       echo $_SESSION['status'];
  unset($_SESSION['status'];
  }
 ?>
 </p>

This is being treated as HTML and so will produce a mess of output due to the < and > being HTML parser opening and closing tags.

I have also removed the $ from the echo statement as echo is a function not a variable.

Solution:

While the link I give above is useful, it is quickest and easiest to simply rename your demo.htm to demo.php to indicate to the server to parse the page as a PHP page. You will need to update links to the page (such as the form action tag) but it will mean the page will be correctly processed by the server.

这篇关于使用PHP会话显示状态消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆