使用iframe时PHP会话变量问题

时间:2013-10-30 20:01:55

标签: php variables session post iframe

我正在尝试在iFrame中创建联系表单。

首先在iFrame中加载表单,然后使用method =“POST”目标作为发送邮件的下一个php页面。当我尝试回显它时,我无法在目标页面中检索会话变量。

我查看了其他论坛帖子并尝试在两个页面中验证会话ID,它们是相同的。

请帮忙!

编辑:添加代码。我有2个PHP文件:

1.Contact.php

<?php

  session_start();

echo "Session ID: ".session_id();

$_SESSION['sesssubject'] = $subject;
$_SESSION['sessmessage'] = $message;
$_SESSION['sessname'] = $name;
$_SESSION['sessemail'] = $email
?>

<table width="400" border="0" align="center" cellpadding="3" cellspacing="1">
  <tr>
    <td><strong>Contact Form</strong></td>
  </tr>
</table>

<table width="400" border="0" align="center" cellpadding="0" cellspacing="1">
  <tr>
    <td>
      <form method="post" action="send_contact.php">
      <table width="100%" border="0" cellspacing="1" cellpadding="3">
        <tr>
          <td width="16%">Subject</td>
          <td width="02%">:</td>
          <td width="82%"><input name="subject" type="text" id="subject" size="50"></td>
        </tr>
        <tr>
          <td>Message</td>
          <td>:</td>
          <td><textarea name="message" cols="50" rows="4" id="message"></textarea></td>
        </tr>
        <tr>
          <td>Name</td>
          <td>:</td>
          <td><input name="name" type="text" id="name" size="50"></td>
        </tr>
        <tr>
          <td>Email</td>
          <td>:</td>
          <td><input name="email" type="text" id="email" size="50"></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>
          <input type="submit" name="Submit" value="Submit">
          <input type="reset" name="Submit2" value="Reset">
          </td>
        </tr>
      </table>
      </form>
    </td>
  </tr>
</table>

2。 send_contact.php

<?php
  session_start();

echo "Session ID: ".session_id();


$subject = $_POST['sesssubject'];
$message = $_POST['sessmessage'];
$name = $_POST['sessname']; 
$email = $_POST['sessemail']; 

echo "hi";
echo $subject;
echo $message;
echo $name;
echo $email;

$to ='<my-email>';
$send_contact=mail($to,$subject,$message,$name);

if($send_contact)
  {
  echo "We've received your contact information";
  }
else 
  {
  echo "ERROR";
  }
?>

2 个答案:

答案 0 :(得分:0)

忘记ifrmane,我认为你无法从HTML中捕获POST数据。

如果你有html文件

<html>
<body>
<form action="result.php" method="POST">
<input type="text" name="field_name"/>
<input type="submit" name="submit" value="submit"/>
</form>
</body>
</html>

然后你需要写一个result.php文件,因为我们在上面的表格中使用了result.php:

<?php
$name = $_POST['field_name'];
echo $name;
?>

确保在工作服务器上托管这些html和php文件,因为php是服务器端脚本语言,因此需要托管。 您只需下载并安装Windows的WAMP服务器即可使用本地主机服务器,然后将您的html和php文件粘贴到C:/ wamp / www /文件夹中。 运行wamp服务器并在浏览器中打开127.0.0.1。

答案 1 :(得分:0)

  

我的目标很简单,我只需要将4个变量传递给   第二页。当我尝试没有会话时没有发生,所以我使用了   它在另一个线程中的建议。相同的代码甚至无法正常工作   当我删除顶部的会话详细信息时。

好的,我现在就拿到它,摆脱你根本不需要它们的所有会话

如果您要使用从表单发布的变量,请执行以下操作:

<?php

$subject = $_POST['subject'];
$message = $_POST['message'];
$name = $_POST['name']; 
$email = $_POST['email']; 

echo "hi";
echo $subject;
echo $message;
echo $name;
echo $email;

$to ='<my-email>';
$send_contact=mail($to,$subject,$message,$name);

if($send_contact)
  {
  echo "We've received your contact information";
  }
else 
  {
  echo "ERROR";
  }
?>

它没有用,因为你为POST变量使用了错误的名字,它应该是你的html标签的名称。

希望这有帮助!