POST HTML文本区域到PHP变量没有输入


POST HTML textarea to PHP Variable without input

花了两天多的时间来寻找这个困惑的答案,我现在直接把问题贴出来。有很多提示和答案的片段,但没有一个能绝对解决我所面临的问题,因此这篇文章。

我有以下一个特定问题的脚本,我无法将文本区域的内容传递给另一个php文件,该文件通过href激活,从而触发要创建的动态表单。

这个概念是:有一个变量:"comment"有一个文本区传递通过一个表单,接受文本和存储到变量"评论"。然后,当用户单击<a href="hsl:logcall?...超链接时,它将传递给updatedb。数据库中的updatettxt表。可以设置文本传递,但不是基于textarea的变量info…

下面是html/php代码:
<!DOCTYPE HTML> 
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body> 
<?php
// define variables and set to empty values
$comment = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
   if (empty($_POST["comment"])) {
     $comment = "";
   } else {
     $comment = test_input($_POST["comment"]);
   }
}
function test_input($data) {
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
}
?>
<TABLE CELLSPACING="10">
<TR>
    <TD>
    <TABLE>
    <TR>
    <TD>
    <p>
    <b>Please use the below to start capturing your Call Description:</b>
    <form method="POST">
    <textarea name="comment" id="comment" rows="5" cols="45"></textarea>
    </form>
    </TD>
    <TR>
    <TD>
<?php
$comment = $_POST[comment]; // Variable who accept your data from textarea
// You don't need to use variables, but if you starter, easier to understand.
    // Do something with your arrived data... 
// Stupid, but for short explanation... for example echo it...
echo $comment;
?>
    <a href="hsl:editrecord?formmode=edit&table=userdb&key=<?=$userdb_keysearch;?>"><img src="img/icons/call_update.gif" width="16" height="16" alt="" border="0" />Edit Details</a>
    <a href="hsl:logcall?userdb.keysearch=<?=$userdb_keysearch;?>&updatedb.updatetxt=<?=($_POST[comment]);?>"><img src="img/icons/call_detail.gif" width="16" height="16" alt="" border="0" />Log New Call</a>
    <a href="hsl:printme"><img src="img/icons/call_print.gif" width="16" height="16" alt="" border="0" />Print This Page</a>
    </TD>
    </TR>
    </TABLE>
</TD>
</TR>
</TABLE>
</body>
</html>

这是原始的未编辑的代码

<a href="hsl:editrecord?formmode=edit&table=userdb&key=<?=$userdb_keysearch;?>">
<im‌​g src="img/icons/call_update.gif" width="16" height="16" alt="" border="0" />Edit Details</a> 
<a href="hsl:logcall?userdb.keysearch=<?=$userdb_keysearch;?>">
<img src="img/icons/call_detail.gif" width="16" height="16" alt="" border="0" />Log New Call</a> 
<a href="hsl:printme"><img src="img/icons/call_print.gif" width="16" height="16" alt="" border="0" />Print This Page</a>

您必须在浏览器从中获取数据并将其放入PHP可以读取的请求之前提交表单。

没有提交按钮(也没有任何JavaScript可以提交表单)。添加一个。

原因:

  • 您没有<form>
  • 您没有<input type="submit">来提交表单
  • 您正在将文本写入<tr></tr>,这是完全错误的。
  • 你的文本区也需要像这样传递评论:<textarea....><?=$comment;?></textarea>
  • 有许多安全问题需要修复:转义字符串的有害代码,例如
好运