[英]success or fail message upon submitting the form
我剛接觸HTML和PHP。 我目前正在使用一個聯系頁面,該頁面接受用戶輸入並將數據放置在給定的數據庫中。 提交表單后,除了成功和失敗消息外,我設法使所有工作正常進行。 我正在嘗試使用PHP'if'和'else'語句使成功或失敗消息顯示在同一頁面上。 請注意,我已經設法在標題中顯示成功或失敗消息。
我進行了大量研究,並遇到了一些類似的問題。 但是,似乎沒有任何工作。 如果有人可以看一下我的代碼,我將不勝感激; 也許將我引向正確的方向。 提前致謝。
HTML代碼:
<section class="main-container">
<div class="main-wrapper">
<h2>Contact Us</h2>
<form class="signup-form" action="includes/contact.inc.php" method="POST">
<input type="text" name="user_fullname" required placeholder="Fullname">
<input type="email" name="user_email" required placeholder="E-mail">
<input type="text" name="subject" required placeholder="Subject">
<input type="text" name="message" style="height:250px;" required placeholder="Message">
<button type="submit" name="submit">Submit</button>
</form>
</div>
</section>
<?php
if (isset($_POST['submit'])) {
echo "Contact Successful!";
} else {
echo "Contact Fail!";
}
?>
PHP代碼:
<?php
if (isset($_POST['submit'])) {
include_once 'dbh.inc.php';
$fullname = mysqli_real_escape_string($conn, $_POST['user_fullname']);
$email = mysqli_real_escape_string($conn, $_POST['user_email']);
$subject = mysqli_real_escape_string($conn, $_POST['subject']);
$message = mysqli_real_escape_string($conn, $_POST['message']);
if (!preg_match("/^[a-zA-Z]*$/", $fullname)) {
header("Location: ../contact.php?contact details=invalid");
exit();
} else {
$sql = "INSERT INTO contact (user_fullname, user_email, subject, message) VALUES ('$fullname', '$email', '$subject', '$message');";
mysqli_query($conn, $sql);
header("Location: ../contact.php?contact=success");
exit();
}
} else {
header("Location: ../contact.php");
exit();
}
您可以執行發送回$_GET
查詢的操作(例如contact.php?response=whatever
),但隨后需要檢查而不是$_POST
。 替代方法是將消息存儲在會話中,然后在原始頁面上重新調用它們。 還要注意,您需要在查詢上綁定參數,轉義是passé,不如綁定參數安全。 如果您尚未這樣做,我將使用配置文件的使用,並將其包含在每個頂級頁面的頂部。 另外,在這里我將提出兩點建議:1)使用框架或2)學習如何在類/方法場景中執行這些功能以獲得OOP(面向對象編程)的全部好處。 最后,我沒有測試任何一個,因此請記住這一點,但是只要沒有語法錯誤,它就可以工作。
/config.php
<?php
# Create some defines for consistent file reference
define('DS',DIRECTORY_SEPARATOR);
define('ROOT_DIR',__DIR__);
define('INCLUDES',ROOT_DIR.DS.'includes');
define('FUNCTIONS',INCLUDES.DS.'functions');
# Start session
session_start();
# Add database
include_once(INCLUDES.DS.'dbh.inc.php');
/includes/functions/myfunctions.php
<?php
function insertMessage($conn,$fullname,$email,$subject,$message)
{
# You need to bind parameters here, forget about the escaping business
$sql = "INSERT INTO contact (user_fullname, user_email, subject, message) VALUES (?,?,?,?)";
# Prepare
$stmt = mysqli_prepare($conn, $sql);
# Bind the parameters
mysqli_stmt_bind_param($stmt, 'ssss', $fullname,$email,$subject,$message);
# Execute the query
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
}
function setMessage($msg,$type)
{
# Store the message to session
$_SESSION['messages'][$type] = $msg;
}
function getMessage($type=false)
{
# If there is no specific type to return, send all messages
if(empty($type)) {
if(isset($_SESSION['messages'])) {
$msgs = $_SESSION['messages'];
unset($_SESSION['messages']);
return $msgs;
}
# Return false by default
return false;
}
# To send a specific message, try retrieving $type
if(isset($_SESSION['messages'][$type])) {
$msg = $_SESSION['messages'][$type];
unset($_SESSION['messages'][$type]);
return $msg;
}
# Return false by default
return false;
}
/includes/contact.inc.php
# Include our defines, session, database
include_once('..'.DIRECTORY_SEPARATOR.'config.php');
# Add our functions
include_once(FUNCTIONS.DS.'myfunctions.php');
# Check if the submission is set
if(isset($_POST['submit'])) {
# Check if the name and email are valid
if(!preg_match("/^[a-zA-Z]*$/", $_POST['user_fullname']) || !filter_var($_POST['user_email'],FILTER_VALIDATE_EMAIL)) {
# If not valid, save message to session
setMessage('Invalid email or name.','error');
} else {
# Insert the message into the database
insertMessage($conn,$_POST['user_fullname'],$_POST['user_email'],$_POST['subject'],$_POST['message']);
# Store the message for writing back
setMessage('Thank you, your message has been sent.','success');
}
}
# Redirect
header("Location: ../contact.php");
exit;
/contact.php
<?php
# Include our defines, session, database
include_once('config.php');
# Add our functions
include_once(FUNCTIONS.DS.'myfunctions.php');
?>
<section class="main-container">
<div class="main-wrapper">
<h2>Contact Us</h2>
<form class="signup-form" action="includes/contact.inc.php" method="POST">
<input type="text" name="user_fullname" required placeholder="Fullname">
<input type="email" name="user_email" required placeholder="E-mail">
<input type="text" name="subject" required placeholder="Subject">
<input type="text" name="message" style="height:250px;" required placeholder="Message">
<button type="submit" name="submit">Submit</button>
</form>
</div>
</section>
<?php
# Fetch all messages (could be error or could be success)
$msg = getMessage();
# If there are messages
if(!empty($msg))
# Write them to the page
echo '<div class="alerts">'.implode('</div><div class="alerts">',$msg).'</div>';
我對html代碼進行了更改,將$_POST
替換$_POST
$_REQUEST
。
這是您的更新代碼:
HTML代碼:
<section class="main-container">
<div class="main-wrapper">
<h2>Contact Us</h2>
<form class="signup-form" action="includes/contact.inc.php" method="POST">
<input type="text" name="user_fullname" required placeholder="Fullname">
<input type="email" name="user_email" required placeholder="E-mail">
<input type="text" name="subject" required placeholder="Subject">
<input type="text" name="message" style="height:250px;" required placeholder="Message">
<button type="submit" name="submit">Submit</button>
</form>
</div>
</section>
<?php
if (isset($_REQUEST['contact'] == "success")) {
echo "Contact Successful!";
} else {
echo "Contact Fail!";
}
?>
PHP代碼:
<?php
if (isset($_POST['submit'])) {
include_once 'dbh.inc.php';
$fullname = mysqli_real_escape_string($conn, $_POST['user_fullname']);
$email = mysqli_real_escape_string($conn, $_POST['user_email']);
$subject = mysqli_real_escape_string($conn, $_POST['subject']);
$message = mysqli_real_escape_string($conn, $_POST['message']);
if (!preg_match("/^[a-zA-Z]*$/", $fullname)) {
header("Location: ../contact.php?contact=invalid");
exit();
} else {
$sql = "INSERT INTO contact (user_fullname, user_email, subject, message) VALUES ('$fullname', '$email', '$subject', '$message');";
mysqli_query($conn, $sql);
header("Location: ../contact.php?contact=success");
exit();
}
} else {
header("Location: ../contact.php");
exit();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.