ошибки формы php - PullRequest
       27

ошибки формы php

0 голосов
/ 13 января 2010

Здравствуйте, я пытаюсь установить пользовательские ошибки. Я получил форму. Действия для post.php Я не хочу, чтобы форма отправляла post.php для ошибок. Мне нужно установить ошибки на той же странице. я пытался

$sql = "
    INSERT INTO yazilar (baslik, spot, spot_kisa, spot_resim, spot_resim_isim, icerik, kategori, tiklanma, eklemetarihi)
    VALUES
    ('$_POST[baslik]','$_POST[spot]','$_POST[spot_kisa]','$_POST[spot_resim]','$_POST[spot_resim_isim]','$_POST[icerik]','$_POST[kategori]','$_POST[tiklanma]','$_POST[tarih]')
";
$sonuc = mysql_query($sql);

<?
    if ($sonuc) {
        echo ("<p class='msg done'>Yeni icerik basarili bir sekilde eklendi.</p>");
    } 
    if(! $sonuc) {
        echo ("<p class='msg warning'>Ekleme basarisiz oldu.</p>");  
    }
?>

это всегда показывает Yeni icerik basarili bir sekilde eklendi.

this.

помогите мне, плкс

Ответы [ 7 ]

2 голосов
/ 13 января 2010

Ваш запрос действителен, и он успешно вставляет данные, поэтому MySql_Query() возвращает значение true, которое, в свою очередь, «запускает» первый if, но не второй.

См. Документацию для возвращаемых значений MySql_Query .

Если вы хотите получить подтверждение, вы должны написать его.

также: ваши два оператора if могут быть преобразованы в одно. Посмотрите на синтаксис if / else

1 голос
/ 13 января 2010

Если вы хотите, чтобы ваши ошибки отображались в отправляющей форме, просто переместите код post.php на страницу формы и подготовьте его следующим образом:

<?php
if(isset($_POST['baslik'])) {
  $sql = "
    INSERT INTO yazilar (baslik, spot, spot_kisa, spot_resim, spot_resim_isim, icerik, kategori, tiklanma, eklemetarihi)
    VALUES
    ('$_POST[baslik]','$_POST[spot]','$_POST[spot_kisa]','$_POST[spot_resim]','$_POST[spot_resim_isim]','$_POST[icerik]','$_POST[kategori]','$_POST[tiklanma]','$_POST[tarih]')
";
  $sonuc = mysql_query($sql);

  if ($sonuc) {
    echo ("<p class='msg done'>Yeni icerik basarili bir sekilde eklendi.</p>");
    exit;
  } 
  else {
    $error = "<p class='msg warning'>Ekleme basarisiz oldu.</p>";  
  }
}
?>

// form code here
<?php if(isset($error)) { echo $error; } ?>
// around where you'd like the error to display

Теперь, если действие прошло успешно, сообщение об успехе будет отображаться ни с чем другим, в противном случае форма будет отображаться снова с сообщением об ошибке, в котором вы ее разместили. Также ознакомьтесь с комментариями soulmerge по внедрению SQL-кода, это серьезный риск для безопасности, которого можно легко избежать.

0 голосов
/ 13 января 2010

Что в этом плохого? Возвращаемые значения mysql_query() являются логическим значением для запросов INSERT, которое равно true, если операция прошла успешно. Вы пытались вставить недопустимые значения (например, слишком длинный текст)? Это должно сгенерировать предупреждение и вернуть false.

Но больше всего беспокоит то, что ваш код уязвим для SQL-инъекций . Пожалуйста, прочтите sql инъекций на php.net , как решить эту проблему.

0 голосов
/ 13 января 2010

Ян Ханчич уже ответил на вопрос, но в качестве примечания:

Не используйте данные POST непосредственно в ваших запросах, это закончится, плохо мне поверьте !!

0 голосов
/ 13 января 2010

заменить

$sonuc = mysql_query($sql);

с этим

$sonuc = mysql_query($sql) or die(mysql_error());

есть ли ошибки?

Возможно ли, что ваши поля таблицы не совпадают с теми, которые вы вставили?

0 голосов
/ 13 января 2010

Попробуйте это: if ($ sonuc! == false) {... См. php ручной ввод

0 голосов
/ 13 января 2010

попробуйте

    $sonuc = mysql_query($sql);

    <?php
       if($sonuc !== false){
          echo ("<p class='msg done'>Yeni icerik basarili bir sekilde eklendi.</p>");
       } else {
          echo ("<p class='msg warning'>Ekleme basarisiz oldu.</p>");     
       }
    ?>

РЕДАКТИРОВАТЬ: если вам нужна проверка вместо проверки, работал ли запрос, отметьте это http://www.php -mysql-tutorial.com / wikis / php-tutorial / form-validation-using-php.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...