simple world Ответов: 4

Нужна помощь с моим ниже код в PHP


Итак, у меня есть этот php-код, и я не уверен, является ли он правильным или неправильным.
я хотел бы получить некоторую помощь, будь то неправильно или правильно и почему.
Моя главная проблема заключается в том , что переменная результата в последнем [if] работает очень хорошо, но не так, как предполагалось, я думаю.
Заранее спасибо.

Что я уже пробовал:

<pre><?php
include 'connect.php';

function safe($con, $data)
{
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  $data = mysqli_real_escape_string($con, $data);
  return $data;
}

$name;
$email;
$msg;

if($_SERVER["REQUEST_METHOD"] == "POST")
{
  $name = safe($conn, $_POST['name']);
  $email = safe($conn, $_POST['email']);
  $msg = safe($conn, $_POST['message']);

  $sql = "INSERT INTO msgs (name, email, message, datte) VALUES (?, ?, ?, NOW())";

  $stmt = mysqli_stmt_init($conn);
  if (!mysqli_stmt_prepare($stmt, $sql)) {
      echo "Error with the SQL";
  }
  else {
      mysqli_stmt_bind_param($stmt, "sss", $name, $email, $msg);
      mysqli_stmt_execute($stmt);
      $result = mysqli_stmt_get_result($stmt);

  if(!$result)
  {
    echo "Your Message Has Been Delivered Successfully. <br/> We Will Get Back To You As Soon As Possible.";
    header( "refresh:1;url=index.php" );
  }
  else {
    echo "There was a problem with the system. Retry again later.".mysqli_error($conn);
    header( "refresh:1;url=index.php" );
  }
}




}



mysqli_close($conn);

 ?>

 <!DOCTYPE html>
 <html lang="en">
   <head>
     <meta charset="utf-8">
     <title></title>
     <style>
       body{
         background:#333;
         color:#fff;
         text-align: center;
         font-size: 1.5em;
       }
     </style>
   </head>
   <body>
   </body>
 </html>




Well in the <pre>$result = mysqli_stmt_get_result($stmt);

оператор возвращает true, если он преуспел, и false, если он потерпел неудачу, и ниже в [if] я проверяю, не провалился ли он в otrfer для обработки с остальной частью кода
if(!$result)
  {
    echo "Your Message Has Been Delivered Successfully. <br/> We Will Get Back To You As Soon As Possible.";
    header( "refresh:1;url=index.php" );
  }



Вот входные данные для приведенного выше кода.

<div id="contact" class="contact">
        <form class="form" action="msg-process.php" method="post">
          <input type="text" name="name" value="" placeholder="Name" required>
          <input type="text" name="email" value="" placeholder="Enter Your Email..." required>
          <textarea name="message" rows="8" cols="40" placeholder="Enter Your Message..." required></textarea>
          <input type="submit">
        </form>
      </div>

k5054

"Моя главная проблема заключается в том, что переменная результата в последнем [if] работает очень хорошо, но не так, как предполагалось"

Пожалуйста объяснить. Чего вы ожидали, что получаете, и почему это не соответствует вашим ожиданиям? Может быть, также включить некоторые примеры ввода.

simple world

я обновил вопрос

4 Ответов

Рейтинг:
22

OriginalGriff

Мы понятия не имеем, что должен делать ваш код, поэтому не можем сказать, "работает ли он правильно" или "работает неправильно" - вам нужно знать, что ожидается от кода, чтобы иметь представление, делает ли он то, что должен!

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Как вы его используете, зависит от вашей системы компилятора, но быстрый поиск в Google имени вашей IDE и "отладчика" должен дать вам необходимую информацию.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!


Рейтинг:
2

phil.o

оператор возвращает true, если он был успешно выполнен, и false, если он потерпел неудачу
Тогда почему вы реализуете прямо противоположное поведение?
Попробуйте удалить логический отрицательный оператор из вашего if состояние:
if ($result)
{
   // success
}
else
{
   // failure
}


Рейтинг:
1

Patrice T

Цитата:
Итак, у меня есть этот php-код, и я не уверен, является ли он правильным или неправильным.

Во-первых, сам факт получения правильного результата или нет является показателем.
Если вы хотите посмотреть, что и как делает ваш код, отладчик-это инструмент выбора.
-----
Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

phpdbg | php отладчик[^]
Методы отладки для PHP-программистов[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.


Рейтинг:
0

simple world

Спасибо я научусь пользоваться отладчиком