0

我有这个网站:http ://aasiskos.webpages.auth.gr/1905_YPA/Rating.php 。我登录( user = mpa@mpa.com 和 pass = 123a ),然后我可以通过推送绿色图像来添加评论。我试图限制“发表评论”的事情。我想避免使用空格(无文字)发布评论。但它不起作用。不是空格的帖子也不会显示。问题在于下面代码中的最后一个“其他”内容。我该如何改变呢?

$link=mysql_connect('localhost', 'student1905','123456');
mysql_select_db('student1905');

$title= $_POST["title"];
$text= $_POST["text"];

if (!$link) {
   die('Could not connect: ' . mysql_error());
}
else {
header("Location:Rating.php"); 
}

if (  ($_POST[title]=" ")     ||       ($_POST[text]=" ")  ) {
header("Location:Rating.php"); 
}
else
{
$sql = "INSERT INTO kritikes (Auxon, Date, Title, Text) VALUE ('',CURDATE(),'$_POST[title]', '$_POST[text]')";
mysql_query($sql);
}

?>
4

7 回答 7

3

您可以使用 PHP 的trim()函数从字符串的开头和结尾删除空格。这将很容易让您评估内容。

但是,您的代码还有其他几个问题。首先,Rating.php如果您的数据库连接存在,您将重定向到。这将阻止 PHP 中的任何未来代码运行。

您还使用了已弃用的函数系列。mysql_*带来严重的安全隐患。你真的应该考虑使用MySQLiPDO。除此之外,您的代码对SQL 注入是开放的,因此您当然应该确保清理输入。

话虽如此,以下代码应该适合您,但您需要根据我上面关于mysql_*SQL 注入的建议进行更改:

$link = mysql_connect('localhost', 'student1905','123456');
mysql_select_db('student1905');

$title= trim($_POST["title"]);
$text = trim($_POST["text"]);

if(!$link) 
{
   die('Could not connect: ' . mysql_error());
}
else {
    if(strlen($title) == 0 || strlen($text) == 0) 
    {
        header("Location:Rating.php"); 
    }
    else
    {
        $sql = "INSERT INTO kritikes (Auxon, Date, Title, Text) VALUE ('',CURDATE(),'$title', '$text')";
        mysql_query($sql);
    }
}
于 2013-03-29T13:41:28.213 回答
0

用于trim删除任何前导或尾随空格。然后检查消息是否为空(即。strlen($message) === 0)。

于 2013-03-29T13:37:37.247 回答
0

你可以这样做-

if(trim($_POST[title])=="") {
  // your code
}
于 2013-03-29T13:38:43.280 回答
0

尝试更新这一行:

if (  ($_POST[title]=" ")     ||       ($_POST[text]=" ")  )

到 :

if (  strlen(trim($_POST[title]))== 0    ||       strlen(trim($_POST[text]))== 0  )
于 2013-03-29T13:40:48.440 回答
0
  1. 对于空格,使用 str_replace: 例如,$string = str_replace(' ', '', $string);
  2. 对于所有空格,使用 preg_replace:

    $string = preg_replace('/\s+/', '', $string);

  3. 如果您只是在字符串的开头或结尾处理多余的空格,您可以使用 trim()、ltrim() 或 rtrim() 来删除它。

于 2013-03-29T13:41:00.477 回答
0

将您的帖子变量读入实际变量,同时进行修剪。然后,进行检查以确保它们都不是空字符串。如果两者都不为空,则继续执行 sql 查询。请参见下面的示例。

$title = trim($_POST['title']);
$text  = trim($_POST['text']);
if($title != '' && $text != '') {
    $sql = "INSERT INTO kritikes (Auxon, Date, Title, Text) VALUE ('',CURDATE(),'$title', '$text')";
    mysql_query($sql);
}
于 2013-03-29T13:41:59.647 回答
0

您可以trim()用来取出任何前导和尾随空格。例子:

 trim('  h i '); //is equal to "h i"
 trim('hello world'); //is equal to "hello world"

它不会删除中间的空格。

empty无论字符串包含多少空格,您都可以使用它来检查字符串是否为空。例子:

 empty(""); //returns true
 empty("  "); //returns true
 empty("  a"); //returns false
于 2013-03-29T13:42:00.327 回答