我对整个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方法而不是帖子。
答案 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'>
我希望它能解决问题。