PHP / MySQL, отправив меня обратно в форму регистрации - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь создать форму сообщения для онлайн-портфолио, сначала работая с локальной базой данных, а затем переключая ее позже.Когда я нажимаю кнопку «отправить», она возвращается к форме регистрации в файле index.php.Я основал код на более ранней практике, очевидно, я не делаю что-то правильно, но я все еще новичок в PHP (плюс, бесполезные занятия в колледже мешают мне сосредоточиться исключительно на кодировании, которое имеет..... существенно сыграло роль во мне, не будучи способным сосредоточиться исключительно на кодировании).Это возвращает меня к форме регистрации на странице индекса, которая указывает, что я делаю что-то не так.

Форма из index.php:

<form action="includes/process.php" method="POST">
     <p>First Name:</p>
    <input type="text" id="first" name="first"> <p>Last Name:</p>
  <input type="text" id="last" name="last">       
  <br>
  <p>E-mail:</p>
    <input type="text" id="email" name="email"> <br>
  <p>Message:</p>
     <textarea id="message" name="message" size="10000" rows="6" cols="50"></textarea><br><br>
  <input type="submit" value="Send">
  <input type="reset" value="Reset">
</form>

Код из включает / db.php

<?php 

$dbServername = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbName = "portfoliomessages";

$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);

Код для включает / process.php

<?php

if (isset($_POST['submit'])) {
include_once 'db.php';


$first = mysqli_real_escape_string($conn, $_POST["first"]);
$last = mysqli_real_escape_string($conn, $_POST["last"]);
$email = mysqli_real_escape_string($conn, $_POST["email"]);
$message = mysqli_real_escape_string($conn, $_POST["message"]);
//error handlers
//Check for empty fields

if( empty($first) || empty($last) || empty($email)|| empty($message) )  {
    header("Location: ../index.php?index=empty");
    exit();
} else {
    //check if input characters are valid
    if (!preg_match("/^[a-zA-Z]*$/", $first) || !preg_match("/^[a-zA-Z]*$/", 
 $last) ) {
        header("Location: ../index.php?index=invalid");
        exit();
    } else {
        //check if email is valid
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            header("Location: ../index.php?index=email");
        exit();
            } else {
                //Insert message into database
                $sql = "INSERT INTO newmessagesthirdattempt (first, last, 
  message, email) VALUES ('$first', '$last', '$message', '$email);";
                mysqli_query($conn, $sql);
                header("Location: ../success.php");
                exit();
            }
        }

    }

} else {
header("Location: ../index.php");
exit();
}

1 Ответ

0 голосов
/ 26 сентября 2018

Согласно W3C обрабатываются только входы с атрибутом имени.Здесь вашему представлению не хватает атрибута имени.Вот почему if (isset($_POST['submit'])) { не соответствует действительности.

Вы можете добавить атрибут имени к кнопке отправки или проверить другой ввод, например, «первый» или «последний».

Другой способ - пройтиаргумент для вашего файла процесса:

<form action="includes/process.php?action=something" method="POST">

, а затем:

if (isset($_GET['action']) && $_GET['action']=='something') {

Если ваш файл process.php получит много обработок, вы можете легко добавить сюда switch.

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