1

我对整个 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 方法而不是一个帖子。

4

5 回答 5

1

啊哈!!!

您没有正确张贴表格。设置

action=""

action="code.php"

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

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


你是什​​么意思它表现得像get而不是post。您不能在 PHP 中读取 $_POST 变量吗?

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

于 2013-02-18T15:41:21.457 回答
0

如果您通过表单发送没有任何文件的正常数据。那么enctype 并不总是需要的。

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

enctype="multipart/form-data"

还要在表单的 action 方法中给出一个 url:<form action='example.php'>

我希望它能解决问题。

于 2013-02-19T09:42:23.177 回答
0

你们都忽略了主要问题并专注于不相关的项目。

首先,最重要的是他使用了一个简短的 php 开瓶器,现在<?并不是<?php每个 Web 服务器都接受简短的开瓶器,首先检查一下。

回显您的 $_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'])){

还将您的表单 action="" 设置为实际页面名称而不是空白

试一试,如果它仍然不起作用,我们将尝试不同的东西

于 2013-02-18T16:09:19.047 回答
0

有效的表单编码类型:

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

于 2013-02-18T15:46:01.333 回答
0

enctype="文本/普通"

把它拿出来。它仅用于调试目的,不会生成任何可以用机器解析的东西。

于 2013-02-18T15:40:37.397 回答