HTML表单充当get而不是post

时间:2013-02-18 15:32:29

标签: php html mysql

我对整个PHP / HTML交易都很陌生,我遇到了一个我不知道如何修复的问题。这是一个非常简单的表单,可以让您将数据输入数据库。 PHP代码如下:

<?

    include("../sqlcontext.php");
    $foo = mysql_query("SELECT*FROM users WHERE checksum='".$_COOKIE['userCookie']."'");
    if($_COOKIE['userCookie'] == '' || !mysql_num_rows($foo)){
        echo 'Du er ikke logget ind :( <a href="login.php">log ind her</a>';
    }
    else{ 

    if($_POST['genreKnap']){
        $nameGenre = $_POST['nameGenre'];
        $textGenre = $_POST['textGenre'];       
        $succes = mysql_query("INSERT INTO genre VALUES('null','$nameGenre','$textGenre')");

        if($succes){
            echo 'Yay!';
        }else {
            echo 'Oh no';
        }
    } 

?>

表格如下:

<form name="form1" method="post" enctype="text/plain" action="">
  <table>
    <tr>
        <td>Genre navn:</td>
        <td><input type="text" name="nameGenre" id="nameGenre" style="width:100%; padding-right: 1px" /></td>
    </tr>
    <tr>
        <td>Genre beskrivelse:</td>
        <td><textarea name="textGenre" id="textGenre" style="width:100%; padding-right: 1px"></textarea></td>
    </tr>
    <tr>
        <td></td>
        <td><input type="submit" name="genreKnap" id="genreKnap" value="Go!"/></td>
    </tr>
  </table>    
</form>

每当我按下提交按钮时,似乎它就像是一个get方法而不是帖子。

5 个答案:

答案 0 :(得分:1)

啊哈!!!

您没有正确发布表单。 设置

action=""

action="code.php"

假设您的php页面名为code.php。只需将其更改为php页面的名称/路径,表单就会将数据发送到您的php代码进行处理。

当您将action=""留空时,会将数据发布到自身(同一页面)。它不是作为GET,它仍然作为POST,但发布到错误的地方。我认为你的问题标题错了。


你的意思是什么表现得比得到而不是发帖。 你不能在PHP中读取$ _POST变量吗?

删除表单代码中的'enctype="text/plain"'

答案 1 :(得分:0)

  

ENCTYPE = “text / plain的”

拿出来。它仅用于调试目的,不会生成任何用机器解析的理解。

答案 2 :(得分:0)

有效表格enctypes:

application/x-www-form-urlencoded: This is the default content type

multipart/form-data
  

内容类型“application / x-www-form-urlencoded”效率低下   用于发送大量二进制数据或包含的文本   非ASCII字符。内容类型“multipart / form-data”应该是   用于提交包含文件,非ASCII数据和表单的表单   二进制数据。

来源:http://www.w3.org/TR/html401/interact/forms.html#h-17.13.3.4

答案 3 :(得分:0)

你们都忽略了主要问题并专注于无关紧要的事情。

首先,他使用的是一个简短的php开启者<?而不是<?php现在并不是每个网络服务器都会接受短暂的开启者,首先检查一下。

回收你的$ _POST变量,看看他们是否正在返回正确的项目

echo "POSTS BELOW<br />";
echo $_POST['nameGenre']."<br />";
echo $_POST['textGenre']."<br />"; 
echo "<br />GETS BELOW<br />";
echo $_GET['nameGenre']."<br />";
echo $_GET['textGenre']."<br />"; 

将这段代码直接放在php opener下面,看看它返回的是什么数据。

if($_POST['genreKnap']){通常是一种不好的做法,因为用户输入最安全的方式是隐藏字段<input type="hidden" name="action" id="action" value="dopost" />并将if子句更改为if($_POST['action']=="dopost && isset($_POST['action'])){

还将表单操作=“”设置为实际页面名称而不是空白

尝试所有尝试,如果它仍然不起作用,我们将尝试不同的

答案 4 :(得分:0)

如果您通过表单发送没有任何文件的普通数据。 然后并不总是需要enctype

但即使你想包括它 正确的方法是:

enctype="multipart/form-data"

还在表单的操作方法中提供一个网址:<form action='example.php'>

我希望它能解决问题。