这是索引.php:
header('Location:media.php?module=home');
我称这种媒体为.php:
<html>
<head>
<title>Test media</title>
</head>
<body>
<table width="960" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2"><img src="images/cms/header.png" width="780" height="77"></td>
</tr>
<tr>
<td width="200" valign="top" bgcolor="#1e2528">
<?php include "menu.php"; ?>
<p align="center"> </p>
</td>
<td width="760" valign="top" bgcolor="#FFFFFF">
<p>
<?php include "content.php"; ?>
<br>
</p>
</td>
</tr>
</table>
</body>
</html>
这就是问题所在,内容.php:
<table width="100%" cellspacing=5>
<?php
include_once 'include/config.php';
include_once 'admin/include/date_lib.php';
include_once 'class/class_lib.php';
include_once 'class/paging.php';
$action = new DB();
$action->db_connect();
if ($_GET[module]=='home'){
</td></tr>";
echo "<tr><td align=center>Headline News<br><br></td></tr>";
elseif ($_GET[module]=='request'){
echo "<tr><td class=judul_head>» Hubungi Kami</td></tr>";
echo "<tr><td class=isi>Silahkan hubungi kami secara online:</td></tr>";
echo "<form action='?module=sendemail' method='post'>
<tr><td class=isi>Name : <input type=text name=name size=35></td></tr>
<tr><td class=isi>E-mail : <input type=text name=email size=35></td></tr>
<tr><td class=isi>Subject: <input type=text name=subject size=50></td></tr>
<tr><td class=isi>Message : <br><textarea name=message rows=13 cols=70>
</textarea></td></tr>
<tr><td><input type=submit value=Send></td></tr>
</form>";
echo "<tr><td class=back><br>
[ <a href=javascript:history.go(-1)>Back</a> ]</td></tr>";
}
elseif ($_GET[module]=='sendemail'){
mysql_query("INSERT INTO email(name,
email,
subject,
message,
date)
VALUES('$_GET[name]',
'$_GET[email]',
'$_GET[subject]',
'$_GET[message]',
'$today_date')");
echo "<tr><td class=header_head>» Status Email</td></tr>
<tr><td class=isi>Email has been sent</td></tr>
<tr><td class=back><br>
[ <a href=index.php>Back</a> ]</td></tr>";
}
我有一个使用发布方法的电子邮件表单。但是当我单击提交按钮时在 URL 地址栏上会是这样的
http://staging/media.php?name=Test+name&email=Test+email&subject=test+subject&,message=Test+message
就像我使用 get 方法一样。但是,如果在查询时将$_POST
更改为$_GET
。它不起作用。
我的脚本中缺少某些内容吗?还是因为我使用 $_GET[module]
方法在同一页面上调用?
if ($_GET[module]=='home'){
</td></tr>";
在我看来,你错过了echo "
陈述。
由于您已选择将表单方法设置为"post",因此您从mysql_query中的表单中获得的值需要为 $_POST 而不是 $_GET。希望有帮助!
您在elseif ($_GET[module]=='request')
之前也缺少一个括号我可以推荐一个语法突出显示编辑器。变得很容易找到这些东西。
将 HTML 输出和脚本混合在一起也不好。
GET和POST是两个不同的东西,不应该被认为是可以互换的。
http://php.net/manual/en/reserved.variables.get.php
http://www.php.net/manual/en/reserved.variables.post.php
在 PHP 脚本中使用 $_GET 变量允许您解析和"获取"URL 参数(通常是带有 mod_rewrite 的查询字符串或文件夹参数),而 $_POST 变量允许您收集传输的数据。
此外,如果您要向 API 或您自己的脚本提交 HTTP 请求,它应该是 POST 请求......因为您要提交数据。如果您尝试访问 API 或您自己的脚本,并且只检索(而不是创建/更新/删除)数据,则应使用 GET 请求。
当我单击提交按钮时,它将在 url 地址栏上如下所示 [...]就像我使用 get 方法一样。
那么你的表格不正确。它是页面上唯一的表单(使用浏览器中的"查看源代码")并且它没有嵌套在另一个表单中吗?
还要记住其他答案的所有提示。虽然它们可能不会立即解决您的问题,但当您的代码更具可读性时,查找它会变得更容易。
您设置要POST
的表单的方法,然后在下面的代码中尝试使用仅包含module=sendmail
的$_GET
(GET method
)访问数据要从提交的表单中访问数据,您需要使用$_POST
(即 POST method
)。代码也没有正确编写:
- 输入标签应如下所示:
<input type="value" name="value" />
- 表单标签应如下所示:
<form method="post" action="http://complete/link/page.php?media=sendmail"></form>
最好为 action
属性指定完整的 URL。