繁体   English   中英

为什么POST和GET方法Form在PHP上不起作用?

[英]Why POST and GET method Form Not Working on PHP?

这是index.php:

 header('Location:media.php?module=home'); 

我称此为media.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">&nbsp;</p>
      </td>
      <td width="760" valign="top" bgcolor="#FFFFFF">
      <p>
      <?php include "content.php"; ?>
       <br>
      </p>    
      </td>
      </tr>
   </table>     
</body> 
</html>

这就是问题content.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>&#187; 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>&#187; 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>";            
}

我有一个使用邮政方式的电子邮件表格。 但是,当我单击“提交”按钮时,它将在网址地址栏上显示如下内容

http://staging/media.php?name=Test+name&email=Test+email&subject=test+subject&,message=Test+message

就像我使用get方法时一样。 但是如果在查询中将$_POST更改$_POST $_GET 没用

我的脚本中缺少什么吗? 还是因为我使用$_GET[module]方法在同一页面上调用?

if ($_GET[module]=='home'){ </td></tr>";在我看来,您缺少echo "语句。

由于您已选择将form方法设置为“ 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请求。

当我单击提交按钮时,它会在网址栏上显示为[...],就像我使用get方法时一样。

那么您的表格不正确。 它是页面上的唯一表单(使用浏览器中的“查看源代码”),还是不嵌套在其他表单中?

还要牢记其他答案的所有提示。 尽管它们可能无法立即解决您的问题,但是当您的代码更具可读性时,查找问题将变得更加容易。

您将表单的方法设置为POST ,然后在以下代码中尝试使用$_GETGET method )访问数据,其中$_GET仅包含module=sendmail要从提交的表单中访问数据,您需要使用$_POST (即POST method )。 另外,代码编写不正确:

  • 输入标记应类似于: <input type="value" name="value" />
  • 表单标记应类似于: <form method="post" action="http://complete/link/page.php?media=sendmail"></form>

最好为action属性指定完整的URL。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM