Php 如何避免;空白“;站点中的帖子?

Php 如何避免;空白“;站点中的帖子?,php,post,whitespace,Php,Post,Whitespace,我有这个网站:。我登录(用户=mpa@mpa.com和pass=123a),然后我可以通过按下绿色图像添加注释。我试图对“发表评论”这件事加以限制。我希望避免使用空格(无文本)发布评论。但它不起作用。非空白的帖子也不会显示。问题在下面代码的最后一个“else”项下。我怎样才能改变这一点 $link=mysql_connect('localhost', 'student1905','123456'); mysql_select_db('student1905'); $title= $_POST[

我有这个网站:。我登录(用户=mpa@mpa.com和pass=123a),然后我可以通过按下绿色图像添加注释。我试图对“发表评论”这件事加以限制。我希望避免使用空格(无文本)发布评论。但它不起作用。非空白的帖子也不会显示。问题在下面代码的最后一个“else”项下。我怎样才能改变这一点

$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);
}

?>

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

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

您可以这样做-

if(trim($_POST[title])=="") {
  // your code
}
你可以这样做-

if(trim($_POST[title])=="") {
  // your code
}

尝试更新此行:

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


尝试更新此行:

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

  • 仅对于空格,使用str_replace:ex$string=str_replace(“”, “$字符串)
  • 对于所有空白,请使用preg_replace:

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

  • 如果您只是处理开头或结尾处的多余空格 可以使用trim()、ltrim()或trim()删除字符串的末尾 那个

  • 仅对于空格,使用str_replace:ex$string=str_replace(“”, “$字符串)
  • 对于所有空白,请使用preg_replace:

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

  • 如果您只是处理开头或结尾处的多余空格 可以使用trim()、ltrim()或trim()删除字符串的末尾 那个

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

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

    您还使用了一系列不推荐使用的函数<代码>mysql*给表带来了严重的安全隐患。你应该考虑使用或。除此之外,您的代码是开放的,因此您当然应该确保对输入进行清理

    话虽如此,下面的代码应该适合您,但您需要根据我上面关于
    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);
        }
    }
    
    可以使用PHP函数删除字符串开头和结尾的空白。这将很容易让您评估内容

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

    您还使用了一系列不推荐使用的函数<代码>mysql*给表带来了严重的安全隐患。你应该考虑使用或。除此之外,您的代码是开放的,因此您当然应该确保对输入进行清理

    话虽如此,下面的代码应该适合您,但您需要根据我上面关于
    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);
        }
    }
    

    将post变量读入实际变量,并在执行此操作时进行修剪。然后,进行检查以确保它们都不是空字符串。如果两者都不为空,则继续执行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);
    }
    

    将post变量读入实际变量,并在执行此操作时进行修剪。然后,进行检查以确保它们都不是空字符串。如果两者都不为空,则继续执行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);
    }
    
    您可以使用
    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
    
    您可以使用
    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
    


    修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪修剪
    strlen
    始终返回一个整数<代码>=就足够了。真的!更新后;你更完整的答案是:-)这里不需要
    =
    strlen
    始终返回一个整数<代码>=就足够了。真的!更新后;你更完整的答案是:-)这只是部分回答了问题。你对trim做了更多的解释。非常感谢你。我相信通过分享我们的知识,是最好的学习方式。好奇的是,有没有其他的“功能”可以删除所有的空格?例如,将“Hello World”转换为---->“HelloWorld”?此外,我这里还有一个与同一个站点相关的新问题:在这种情况下,您将使用正则表达式删除所有空白,或者只使用str_replace(“,”,$str);这只是部分回答了这个问题。你对trim做了更多的解释。非常感谢你。我相信通过分享我们的知识,是最好的学习方式。好奇的是,有没有其他的“功能”可以删除所有的空格?例如,将“Hello World”转换为---->“HelloWorld”?此外,我这里还有一个与同一个站点相关的新问题:在这种情况下,您将使用正则表达式删除所有空白,或者只使用str_replace(“,”,$str);这只是部分回答了问题。如果他有两个问题,他应该发布两个问题。看标题,我已经回答了这个问题。我想你从来没有听说过XY问题;)不管后面发生什么,检查空输入都是您需要执行的步骤。XY不适用。它确实适用。这个