0

私はこのサイトを持っています: http://aasiskos.webpages.auth.gr/1905_YPA/Rating.php . ログイン ( user = mpa@mpa.com and pass = 123a ) すると、緑色の画像を押すことでコメントを追加できます。「コメントの投稿」に制限を加えようとしています。コメントが空白 (テキストなし) で投稿されるのを避けたい。しかし、うまくいきません。whitespace ではない投稿も表示されません。問題は、以下のコードの最後の「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);
}

?>
4

7 に答える 7

3

PHP のtrim()関数を使用して、文字列の先頭と末尾から空白を削除できます。これにより、コンテンツを簡単に評価できます。

ただし、コードには他にもいくつかの問題があります。Rating.phpまず、データベース接続が存在する場合にリダイレクトしています。これにより、PHP の今後のコードが実行されなくなります。

非推奨の関数ファミリーも使用しています。mysql_*深刻なセキュリティへの影響をテーブルにもたらします。MySQLiまたはPDOの使用を検討する必要があります。これに加えて、コードは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

あなたはこのようにすることができます-

if(trim($_POST[title])=="") {
  // your code
}
于 2013-03-29T13:38:43.280 に答える
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 に答える
0

trim先頭または末尾の空白を削除するために使用します。次に、メッセージが空 (つまりstrlen($message) === 0) かどうかを確認します。

于 2013-03-29T13:37:37.247 に答える
0

この行を更新してみてください:

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

に :

if (  strlen(trim($_POST[title]))== 0    ||       strlen(trim($_POST[text]))== 0  )
于 2013-03-29T13:40:48.440 に答える