使用 iframe 时出现 PHP 会话变量问题


PHP session variable issue while using iframe

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

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

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

请帮忙!

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

1.联系方式.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";
  }
?>

的目标很简单,我只需要将 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 标签的名称。

希望这有帮助!

忘记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>

然后你需要写一个结果.php文件,正如我们使用的结果.php在上面的形式中

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

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