PHP là ngôn ngữ lập trình được sử dụng để tạo các ứng dụng web tương tác. Nó là một ngôn ngữ phía máy chủ phổ biến Trong hướng dẫn này, sẽ xây dựng một biểu mẫu liên hệ bằng PHP. Nó sẽ bao gồm các tính năng như xác thực biểu mẫu, khả năng gửi email bằng máy chủ Gmail SMTP và thư viện PHPMailer Biểu mẫu liên hệ cuối cùng của chúng tôi sẽ trông như hình bên dưới Mục lụcđiều kiện tiên quyếtĐể làm theo hướng dẫn này, người đọc nên - Có hiểu biết cơ bản về HTML và PHP
- Đã cài đặt PHP và XAMPP. Chúng tôi sẽ sử dụng XAMPP để chạy PHP cục bộ trên máy của bạn
Sử dụng trang này để tải xuống và cài đặt XAMPP Tổng quan và thiết lập dự ánTrong phần này, chúng tôi sẽ thiết lập dự án của chúng tôi. Lưu ý rằng hướng dẫn này sử dụng XAMPP (môi trường phát triển PHP đa nền tảng miễn phí) Do đó, sau khi cài đặt, hãy khởi động các mô-đun Apache và MySQL Tiếp theo, mở trình duyệt của bạn và điều hướng đến http. // localhost/bảng điều khiển/. Bạn nên xem những điều sau đây Dự án mới PHPHãy tạo một dự án PHP mới Bước 1Trong C: drive của bạn, hãy mở thư mục <!DOCTYPE html>
<html>
<head>
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
.error {
color: white;
background-color: crimson;
border-radius: 7px;
text-align: center;
}
.success {
background-color: darkgreen;
color: white;
border-radius: 7px;
text-align: center;
}
</style>
</head>
<body>
<main class="container">
<h4>Contact</h4>
<hr>
<div class="row">
<div class="col s12 l5">
<span class="bold">Get in touch with me via email</span>
</div>
<div class="col s12 l5 offset-l2">
<div class="success"><?php echo $success ?></div>
<div class="error"><?php echo $error ?></div>
<form action="index.php" method="post">
<div class="input-field">
<i class="material-icons prefix">account_circle</i>
<input type="text" name="name" id="name" value="<?php echo htmlspecialchars($name) ?>">
<label for="name">Your name*</label>
<div class="error"><?php echo $errors["name"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">email</i>
<input type="email" name="email" id="email" value="<?php echo htmlspecialchars($email) ?>">
<label for="email">Your email*</label>
<div class="error"><?php echo $errors["email"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">mode_edit</i>
<textarea id="message" class="materialize-textarea" name="message"><?php echo htmlspecialchars($message) ?></textarea>
<label for="message">Your Message*</label>
<div class="error"><?php echo $errors["message"] ?></div>
</div>
<div class="input-field center">
<input type="submit" class="btn-large z-depth-0" name="submit" id="submit" value="Send"></input>
</div>
</form>
</div>
</div>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
</html>
0. Trong thư mục này, điều hướng đến thư mục <!DOCTYPE html>
<html>
<head>
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
.error {
color: white;
background-color: crimson;
border-radius: 7px;
text-align: center;
}
.success {
background-color: darkgreen;
color: white;
border-radius: 7px;
text-align: center;
}
</style>
</head>
<body>
<main class="container">
<h4>Contact</h4>
<hr>
<div class="row">
<div class="col s12 l5">
<span class="bold">Get in touch with me via email</span>
</div>
<div class="col s12 l5 offset-l2">
<div class="success"><?php echo $success ?></div>
<div class="error"><?php echo $error ?></div>
<form action="index.php" method="post">
<div class="input-field">
<i class="material-icons prefix">account_circle</i>
<input type="text" name="name" id="name" value="<?php echo htmlspecialchars($name) ?>">
<label for="name">Your name*</label>
<div class="error"><?php echo $errors["name"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">email</i>
<input type="email" name="email" id="email" value="<?php echo htmlspecialchars($email) ?>">
<label for="email">Your email*</label>
<div class="error"><?php echo $errors["email"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">mode_edit</i>
<textarea id="message" class="materialize-textarea" name="message"><?php echo htmlspecialchars($message) ?></textarea>
<label for="message">Your Message*</label>
<div class="error"><?php echo $errors["message"] ?></div>
</div>
<div class="input-field center">
<input type="submit" class="btn-large z-depth-0" name="submit" id="submit" value="Send"></input>
</div>
</form>
</div>
</div>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
</html>
1 và tạo một thư mục mới với tên <!DOCTYPE html>
<html>
<head>
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
.error {
color: white;
background-color: crimson;
border-radius: 7px;
text-align: center;
}
.success {
background-color: darkgreen;
color: white;
border-radius: 7px;
text-align: center;
}
</style>
</head>
<body>
<main class="container">
<h4>Contact</h4>
<hr>
<div class="row">
<div class="col s12 l5">
<span class="bold">Get in touch with me via email</span>
</div>
<div class="col s12 l5 offset-l2">
<div class="success"><?php echo $success ?></div>
<div class="error"><?php echo $error ?></div>
<form action="index.php" method="post">
<div class="input-field">
<i class="material-icons prefix">account_circle</i>
<input type="text" name="name" id="name" value="<?php echo htmlspecialchars($name) ?>">
<label for="name">Your name*</label>
<div class="error"><?php echo $errors["name"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">email</i>
<input type="email" name="email" id="email" value="<?php echo htmlspecialchars($email) ?>">
<label for="email">Your email*</label>
<div class="error"><?php echo $errors["email"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">mode_edit</i>
<textarea id="message" class="materialize-textarea" name="message"><?php echo htmlspecialchars($message) ?></textarea>
<label for="message">Your Message*</label>
<div class="error"><?php echo $errors["message"] ?></div>
</div>
<div class="input-field center">
<input type="submit" class="btn-large z-depth-0" name="submit" id="submit" value="Send"></input>
</div>
</form>
</div>
</div>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
</html>
2Bước 2Mở thư mục <!DOCTYPE html>
<html>
<head>
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
.error {
color: white;
background-color: crimson;
border-radius: 7px;
text-align: center;
}
.success {
background-color: darkgreen;
color: white;
border-radius: 7px;
text-align: center;
}
</style>
</head>
<body>
<main class="container">
<h4>Contact</h4>
<hr>
<div class="row">
<div class="col s12 l5">
<span class="bold">Get in touch with me via email</span>
</div>
<div class="col s12 l5 offset-l2">
<div class="success"><?php echo $success ?></div>
<div class="error"><?php echo $error ?></div>
<form action="index.php" method="post">
<div class="input-field">
<i class="material-icons prefix">account_circle</i>
<input type="text" name="name" id="name" value="<?php echo htmlspecialchars($name) ?>">
<label for="name">Your name*</label>
<div class="error"><?php echo $errors["name"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">email</i>
<input type="email" name="email" id="email" value="<?php echo htmlspecialchars($email) ?>">
<label for="email">Your email*</label>
<div class="error"><?php echo $errors["email"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">mode_edit</i>
<textarea id="message" class="materialize-textarea" name="message"><?php echo htmlspecialchars($message) ?></textarea>
<label for="message">Your Message*</label>
<div class="error"><?php echo $errors["message"] ?></div>
</div>
<div class="input-field center">
<input type="submit" class="btn-large z-depth-0" name="submit" id="submit" value="Send"></input>
</div>
</form>
</div>
</div>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
</html>
2 trong trình chỉnh sửa mã yêu thích của bạn và tạo một tệp mới có tên là <!DOCTYPE html>
<html>
<head>
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
.error {
color: white;
background-color: crimson;
border-radius: 7px;
text-align: center;
}
.success {
background-color: darkgreen;
color: white;
border-radius: 7px;
text-align: center;
}
</style>
</head>
<body>
<main class="container">
<h4>Contact</h4>
<hr>
<div class="row">
<div class="col s12 l5">
<span class="bold">Get in touch with me via email</span>
</div>
<div class="col s12 l5 offset-l2">
<div class="success"><?php echo $success ?></div>
<div class="error"><?php echo $error ?></div>
<form action="index.php" method="post">
<div class="input-field">
<i class="material-icons prefix">account_circle</i>
<input type="text" name="name" id="name" value="<?php echo htmlspecialchars($name) ?>">
<label for="name">Your name*</label>
<div class="error"><?php echo $errors["name"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">email</i>
<input type="email" name="email" id="email" value="<?php echo htmlspecialchars($email) ?>">
<label for="email">Your email*</label>
<div class="error"><?php echo $errors["email"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">mode_edit</i>
<textarea id="message" class="materialize-textarea" name="message"><?php echo htmlspecialchars($message) ?></textarea>
<label for="message">Your Message*</label>
<div class="error"><?php echo $errors["message"] ?></div>
</div>
<div class="input-field center">
<input type="submit" class="btn-large z-depth-0" name="submit" id="submit" value="Send"></input>
</div>
</form>
</div>
</div>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
</html>
4Dán mã bên dưới vào tệp <!DOCTYPE html>
<html>
<head>
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
.error {
color: white;
background-color: crimson;
border-radius: 7px;
text-align: center;
}
.success {
background-color: darkgreen;
color: white;
border-radius: 7px;
text-align: center;
}
</style>
</head>
<body>
<main class="container">
<h4>Contact</h4>
<hr>
<div class="row">
<div class="col s12 l5">
<span class="bold">Get in touch with me via email</span>
</div>
<div class="col s12 l5 offset-l2">
<div class="success"><?php echo $success ?></div>
<div class="error"><?php echo $error ?></div>
<form action="index.php" method="post">
<div class="input-field">
<i class="material-icons prefix">account_circle</i>
<input type="text" name="name" id="name" value="<?php echo htmlspecialchars($name) ?>">
<label for="name">Your name*</label>
<div class="error"><?php echo $errors["name"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">email</i>
<input type="email" name="email" id="email" value="<?php echo htmlspecialchars($email) ?>">
<label for="email">Your email*</label>
<div class="error"><?php echo $errors["email"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">mode_edit</i>
<textarea id="message" class="materialize-textarea" name="message"><?php echo htmlspecialchars($message) ?></textarea>
<label for="message">Your Message*</label>
<div class="error"><?php echo $errors["message"] ?></div>
</div>
<div class="input-field center">
<input type="submit" class="btn-large z-depth-0" name="submit" id="submit" value="Send"></input>
</div>
</form>
</div>
</div>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
</html>
4<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
Điều hướng trở lại <!DOCTYPE html>
<html>
<head>
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
.error {
color: white;
background-color: crimson;
border-radius: 7px;
text-align: center;
}
.success {
background-color: darkgreen;
color: white;
border-radius: 7px;
text-align: center;
}
</style>
</head>
<body>
<main class="container">
<h4>Contact</h4>
<hr>
<div class="row">
<div class="col s12 l5">
<span class="bold">Get in touch with me via email</span>
</div>
<div class="col s12 l5 offset-l2">
<div class="success"><?php echo $success ?></div>
<div class="error"><?php echo $error ?></div>
<form action="index.php" method="post">
<div class="input-field">
<i class="material-icons prefix">account_circle</i>
<input type="text" name="name" id="name" value="<?php echo htmlspecialchars($name) ?>">
<label for="name">Your name*</label>
<div class="error"><?php echo $errors["name"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">email</i>
<input type="email" name="email" id="email" value="<?php echo htmlspecialchars($email) ?>">
<label for="email">Your email*</label>
<div class="error"><?php echo $errors["email"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">mode_edit</i>
<textarea id="message" class="materialize-textarea" name="message"><?php echo htmlspecialchars($message) ?></textarea>
<label for="message">Your Message*</label>
<div class="error"><?php echo $errors["message"] ?></div>
</div>
<div class="input-field center">
<input type="submit" class="btn-large z-depth-0" name="submit" id="submit" value="Send"></input>
</div>
</form>
</div>
</div>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
</html>
6, bạn sẽ thấy tiêu đề có nội dung Hello WorldLưu ý rằng chúng tôi đã không thêm đường dẫn URL vào <!DOCTYPE html>
<html>
<head>
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
.error {
color: white;
background-color: crimson;
border-radius: 7px;
text-align: center;
}
.success {
background-color: darkgreen;
color: white;
border-radius: 7px;
text-align: center;
}
</style>
</head>
<body>
<main class="container">
<h4>Contact</h4>
<hr>
<div class="row">
<div class="col s12 l5">
<span class="bold">Get in touch with me via email</span>
</div>
<div class="col s12 l5 offset-l2">
<div class="success"><?php echo $success ?></div>
<div class="error"><?php echo $error ?></div>
<form action="index.php" method="post">
<div class="input-field">
<i class="material-icons prefix">account_circle</i>
<input type="text" name="name" id="name" value="<?php echo htmlspecialchars($name) ?>">
<label for="name">Your name*</label>
<div class="error"><?php echo $errors["name"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">email</i>
<input type="email" name="email" id="email" value="<?php echo htmlspecialchars($email) ?>">
<label for="email">Your email*</label>
<div class="error"><?php echo $errors["email"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">mode_edit</i>
<textarea id="message" class="materialize-textarea" name="message"><?php echo htmlspecialchars($message) ?></textarea>
<label for="message">Your Message*</label>
<div class="error"><?php echo $errors["message"] ?></div>
</div>
<div class="input-field center">
<input type="submit" class="btn-large z-depth-0" name="submit" id="submit" value="Send"></input>
</div>
</form>
</div>
</div>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
</html>
4 vì theo mặc định trong PHP, điều hướng đến trang gốc của thư mục sẽ tự động tải chỉ mục. tập tin phpTạo biểu mẫuTrong phần này, chúng ta sẽ tạo một biểu mẫu cơ bản Bên trong <!DOCTYPE html>
<html>
<head>
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
.error {
color: white;
background-color: crimson;
border-radius: 7px;
text-align: center;
}
.success {
background-color: darkgreen;
color: white;
border-radius: 7px;
text-align: center;
}
</style>
</head>
<body>
<main class="container">
<h4>Contact</h4>
<hr>
<div class="row">
<div class="col s12 l5">
<span class="bold">Get in touch with me via email</span>
</div>
<div class="col s12 l5 offset-l2">
<div class="success"><?php echo $success ?></div>
<div class="error"><?php echo $error ?></div>
<form action="index.php" method="post">
<div class="input-field">
<i class="material-icons prefix">account_circle</i>
<input type="text" name="name" id="name" value="<?php echo htmlspecialchars($name) ?>">
<label for="name">Your name*</label>
<div class="error"><?php echo $errors["name"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">email</i>
<input type="email" name="email" id="email" value="<?php echo htmlspecialchars($email) ?>">
<label for="email">Your email*</label>
<div class="error"><?php echo $errors["email"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">mode_edit</i>
<textarea id="message" class="materialize-textarea" name="message"><?php echo htmlspecialchars($message) ?></textarea>
<label for="message">Your Message*</label>
<div class="error"><?php echo $errors["message"] ?></div>
</div>
<div class="input-field center">
<input type="submit" class="btn-large z-depth-0" name="submit" id="submit" value="Send"></input>
</div>
</form>
</div>
</div>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
</html>
4Thay thế mã trước bằng mã sau <!DOCTYPE html>
<html>
<head>
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
.error {
color: white;
background-color: crimson;
border-radius: 7px;
text-align: center;
}
.success {
background-color: darkgreen;
color: white;
border-radius: 7px;
text-align: center;
}
</style>
</head>
<body>
<main class="container">
<h4>Contact</h4>
<hr>
<div class="row">
<div class="col s12 l5">
<span class="bold">Get in touch with me via email</span>
</div>
<div class="col s12 l5 offset-l2">
<div class="success"><?php echo $success ?></div>
<div class="error"><?php echo $error ?></div>
<form action="index.php" method="post">
<div class="input-field">
<i class="material-icons prefix">account_circle</i>
<input type="text" name="name" id="name" value="<?php echo htmlspecialchars($name) ?>">
<label for="name">Your name*</label>
<div class="error"><?php echo $errors["name"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">email</i>
<input type="email" name="email" id="email" value="<?php echo htmlspecialchars($email) ?>">
<label for="email">Your email*</label>
<div class="error"><?php echo $errors["email"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">mode_edit</i>
<textarea id="message" class="materialize-textarea" name="message"><?php echo htmlspecialchars($message) ?></textarea>
<label for="message">Your Message*</label>
<div class="error"><?php echo $errors["message"] ?></div>
</div>
<div class="input-field center">
<input type="submit" class="btn-large z-depth-0" name="submit" id="submit" value="Send"></input>
</div>
</form>
</div>
</div>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
</html>
Chuyện gì đang xảy ra ở đây - Chúng tôi đã tạo một biểu mẫu cơ bản bằng phương thức POST để cuối cùng gửi yêu cầu trở lại trang này
Để tìm hiểu thêm về các biểu mẫu PHP, hãy xem bài viết tuyệt vời này
Chúng tôi cũng đang sử dụng materializeCSS cho một số kiểu dáng mặc định Chúng tôi đã thêm một số biến PHP trong trang HTML của mình để lặp lại thông báo lỗi hoặc giá trị được nhập vào biểu mẫu. Lưu ý rằng chúng tôi chưa tạo các biến này trong tập lệnh PHP của mình nên nó sẽ tạo ra một số lỗi nếu bạn làm mới trình duyệt của mình
Hàm htmlspecialchars được sử dụng để thay đổi các ký tự đặc biệt thành những ký tự mà HTML có thể hiểu và hiển thị đúng cách. Điều này ngăn chặn các lỗ hổng như tấn công kịch bản chéo trang (XSS) bằng cách thay thế tất cả các ký tự có hại bằng các thực thể HTML vô hại. Do đó, hãy luôn bao gồm chức năng này khi xuất đầu vào của người dùng trong HTML của bạn
Xác thực biểu mẫu trong PHPTrong phần này, chúng tôi sẽ tạo logic của trang web của chúng tôi trong <!DOCTYPE html>
<html>
<head>
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
.error {
color: white;
background-color: crimson;
border-radius: 7px;
text-align: center;
}
.success {
background-color: darkgreen;
color: white;
border-radius: 7px;
text-align: center;
}
</style>
</head>
<body>
<main class="container">
<h4>Contact</h4>
<hr>
<div class="row">
<div class="col s12 l5">
<span class="bold">Get in touch with me via email</span>
</div>
<div class="col s12 l5 offset-l2">
<div class="success"><?php echo $success ?></div>
<div class="error"><?php echo $error ?></div>
<form action="index.php" method="post">
<div class="input-field">
<i class="material-icons prefix">account_circle</i>
<input type="text" name="name" id="name" value="<?php echo htmlspecialchars($name) ?>">
<label for="name">Your name*</label>
<div class="error"><?php echo $errors["name"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">email</i>
<input type="email" name="email" id="email" value="<?php echo htmlspecialchars($email) ?>">
<label for="email">Your email*</label>
<div class="error"><?php echo $errors["email"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">mode_edit</i>
<textarea id="message" class="materialize-textarea" name="message"><?php echo htmlspecialchars($message) ?></textarea>
<label for="message">Your Message*</label>
<div class="error"><?php echo $errors["message"] ?></div>
</div>
<div class="input-field center">
<input type="submit" class="btn-large z-depth-0" name="submit" id="submit" value="Send"></input>
</div>
</form>
</div>
</div>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
</html>
4 để xác thực đầu vào của người dùngThêm mã bên dưới vào đầu tệp <?php
$success = "";
$error = "";
$name = $message = $email = "";
$errors = array('name' => '', 'email' => '', 'message' => '');
?>
Bạn nên biết điều gì Trong đoạn mã trên - Chúng tôi đã tạo một số biến để lưu trữ thông báo
<?php
$success = "";
$error = "";
$name = $message = $email = "";
$errors = array('name' => '', 'email' => '', 'message' => '');
?>
0, <?php
$success = "";
$error = "";
$name = $message = $email = "";
$errors = array('name' => '', 'email' => '', 'message' => '');
?>
1 hoặc <?php
$success = "";
$error = "";
$name = $message = $email = "";
$errors = array('name' => '', 'email' => '', 'message' => '');
?>
2 - Chúng tôi cũng đã tạo một mảng
<?php
$success = "";
$error = "";
$name = $message = $email = "";
$errors = array('name' => '', 'email' => '', 'message' => '');
?>
3 để lưu trữ các thông báo lỗi cụ thể
Điều hướng trở lại <?php
$success = "";
$error = "";
$name = $message = $email = "";
$errors = array('name' => '', 'email' => '', 'message' => '');
?>
4 và làm mới trình duyệt của bạnLưu ý rằng tập lệnh PHP này được bao bọc bên trong thẻ <?php
$success = "";
$error = "";
$name = $message = $email = "";
$errors = array('name' => '', 'email' => '', 'message' => '');
?>
5, nếu không, nó sẽ không được coi là mã PHP
Tiếp theo, thêm chức năng sau vào bên trong các thẻ PHP function SanitizeString($var)
{
$var = strip_tags($var);
$var = htmlentities($var);
return stripslashes($var);
}
Bạn nên biết điều gì - Chức năng này được sử dụng để khử trùng chuỗi (đầu vào của người dùng) bằng cách xóa
<?php
$success = "";
$error = "";
$name = $message = $email = "";
$errors = array('name' => '', 'email' => '', 'message' => '');
?>
6, <?php
$success = "";
$error = "";
$name = $message = $email = "";
$errors = array('name' => '', 'email' => '', 'message' => '');
?>
7 và <?php
$success = "";
$error = "";
$name = $message = $email = "";
$errors = array('name' => '', 'email' => '', 'message' => '');
?>
8. Điều này rất quan trọng để ngăn chặn tin tặc nhập văn bản độc hại
Tiếp theo, thêm đoạn mã sau if (isset($_POST["submit"])) {
if (empty(trim($_POST["name"]))) {
$errors['name'] = "Your name is required";
} else {
$name = SanitizeString($_POST["name"]);
if (!preg_match('/^[a-zA-Z\s]{6,50}$/', $name)) {
$errors['name'] = "Only letters and spaces allowed";
}
}
if (empty(trim($_POST["email"]))) {
$errors["email"] = "Your email is required";
} else {
$email = SanitizeString($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors["email"] = "Pls give a proper email address";
}
}
if (empty(trim($_POST["message"]))) {
$errors["message"] = "Please type your message";
} else {
$message = SanitizeString($_POST["message"]);
if (!preg_match("/^[a-zA-Z\d\s]+$/", $message)) {
$errors["message"] = "Only letters, spaces and maybe numbers allowed";
}
}
if (array_filter($errors)) {
} else {
// Send email
}
}
Chuyện gì đang xảy ra ở đây Câu lệnh điều kiện trên kiểm tra xem biểu mẫu đã được gửi chưa. Nếu đúng như vậy, nó sẽ thực hiện một số chức năng để khử trùng và xác thực đầu vào của người dùng hoặc hiển thị bất kỳ thông báo lỗi nào Sự kết hợp của hàm <?php
$success = "";
$error = "";
$name = $message = $email = "";
$errors = array('name' => '', 'email' => '', 'message' => '');
?>
9 và function SanitizeString($var)
{
$var = strip_tags($var);
$var = htmlentities($var);
return stripslashes($var);
}
0 kiểm tra xem biểu mẫu có trống khôngHàm function SanitizeString($var)
{
$var = strip_tags($var);
$var = htmlentities($var);
return stripslashes($var);
}
1 được sử dụng để kiểm tra đánh giá đầu vào của người dùng dựa trên một số tiêu chí sử dụng regexVà cuối cùng, nếu không có lỗi trong mảng <?php
$success = "";
$error = "";
$name = $message = $email = "";
$errors = array('name' => '', 'email' => '', 'message' => '');
?>
3, email sẽ được gửi
Gửi Email bằng PHP Mailer và Google Gmail SMTP serverĐể gửi email bằng Gmail, chúng ta cần có tài khoản Google. Nếu bạn chưa có, hãy theo liên kết này để tạo một cái Tải xuống thư PHPPHPMailer là một thư viện phổ biến được viết bằng PHP để gửi email Tải xuống PHPMailer bằng liên kết này Giải nén gói bên trong thư mục php-contact Bạn có thể xem qua file readme để hiểu thêm về thư viện này
Định cấu hình tài khoản Gmail của bạnĐể gửi email, bạn cần bật quyền truy cập cho các ứng dụng kém an toàn hơn bằng liên kết này Lưu ý rằng các tài khoản Google đã bật Xác minh 2 bước không hoạt động với các ứng dụng bảo mật Thay vào đó, bạn sử dụng mật khẩu ứng dụng. Bạn có thể tạo mật khẩu ứng dụng bằng liên kết này Thêm đoạn mã sau vào đầu tệp <!DOCTYPE html>
<html>
<head>
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
.error {
color: white;
background-color: crimson;
border-radius: 7px;
text-align: center;
}
.success {
background-color: darkgreen;
color: white;
border-radius: 7px;
text-align: center;
}
</style>
</head>
<body>
<main class="container">
<h4>Contact</h4>
<hr>
<div class="row">
<div class="col s12 l5">
<span class="bold">Get in touch with me via email</span>
</div>
<div class="col s12 l5 offset-l2">
<div class="success"><?php echo $success ?></div>
<div class="error"><?php echo $error ?></div>
<form action="index.php" method="post">
<div class="input-field">
<i class="material-icons prefix">account_circle</i>
<input type="text" name="name" id="name" value="<?php echo htmlspecialchars($name) ?>">
<label for="name">Your name*</label>
<div class="error"><?php echo $errors["name"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">email</i>
<input type="email" name="email" id="email" value="<?php echo htmlspecialchars($email) ?>">
<label for="email">Your email*</label>
<div class="error"><?php echo $errors["email"] ?></div>
</div>
<div class="input-field">
<i class="material-icons prefix">mode_edit</i>
<textarea id="message" class="materialize-textarea" name="message"><?php echo htmlspecialchars($message) ?></textarea>
<label for="message">Your Message*</label>
<div class="error"><?php echo $errors["message"] ?></div>
</div>
<div class="input-field center">
<input type="submit" class="btn-large z-depth-0" name="submit" id="submit" value="Send"></input>
</div>
</form>
</div>
</div>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
</html>
4
// Include packages and files for PHPMailer and SMTP protocol
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer-master/src/Exception.php';
require 'PHPMailer-master/src/PHPMailer.php';
require 'PHPMailer-master/src/SMTP.php';
// Initialize PHP mailer, configure to use SMTP protocol and add credentials
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Mailer = "smtp";
$mail->SMTPDebug = 1;
$mail->SMTPAuth = TRUE;
$mail->SMTPSecure = "tls";
$mail->Port = 587;
$mail->Host = "smtp.gmail.com";
$mail->Username = "<paste your gmail account here>";
$mail->Password = "<paste Google password or app password here>";
Bạn nên biết điều gì Trong đoạn mã trên - Chúng tôi đã bao gồm các gói và tệp cho giao thức PHPMailer và SMTP
- Chúng tôi khởi tạo Trình gửi thư PHP, định cấu hình nó để sử dụng giao thức SMTP và thêm thông tin đăng nhập
Tiếp theo, thay thế nhận xét này function SanitizeString($var)
{
$var = strip_tags($var);
$var = htmlentities($var);
return stripslashes($var);
}
4 bằng đoạn mã sautry {
$mail->setFrom('<paste your gmail account here>', '<paste your name here>');
$mail->addAddress($email, $name);
$mail->Subject = 'Build a contact form with PHP';
$mail->Body = $message;
// send mail
$mail->send();
// empty users input
$name = $message = $email = "";
$success = "Message sent successfully";
} catch (Exception $e) {
// echo $e->errorMessage(); use for testing & debugging purposes
$error = "Sorry message could not send, try again";
} catch (Exception $e) {
// echo $e->getMessage(); use for testing & debugging purposes
$error = "Sorry message could not send, try again";
}
Chuyện gì đang xảy ra ở đây - Chúng tôi đã thêm người gửi email và tên (chức năng setFrom)
- Chúng tôi cũng đã thêm người nhận email (chức năng addAddress)
- Chúng tôi đã thêm chủ đề và nội dung và cuối cùng đã gửi thư
Phần kết luậnTrong hướng dẫn này, chúng ta đã học cách thêm biểu mẫu liên hệ vào trang web PHP. Chúng tôi cũng đã xem xét cách gửi email bằng tài khoản Gmail của Google và thư viện PHPMailer
Biểu mẫu liên hệ PHP hoạt động như thế nào?
Khi biểu mẫu liên hệ được gửi, dữ liệu gửi biểu mẫu được gửi đến tập lệnh được đề cập trong thuộc tính hành động của biểu mẫu (trình xử lý biểu mẫu liên hệ. php ở dạng của chúng tôi). Sau đó, tập lệnh sẽ thu thập dữ liệu gửi biểu mẫu, xác thực và gửi email
Làm cách nào để gửi biểu mẫu liên hệ tới email bằng PHP?
Làm cách nào để gửi biểu mẫu liên hệ tới email bằng PHP? . Tạo biểu mẫu liên hệ bằng HTML và CSS Lưu trữ biểu mẫu HTML trên máy chủ lưu trữ web trực tiếp để viết tập lệnh PHP Mở trình chỉnh sửa Mã VS của bạn Kết nối trình chỉnh sửa Mã VS với máy chủ web trực tiếp bằng tiện ích mở rộng SFTP Thay đổi phần mở rộng tệp của bạn từ
Làm cách nào để kết nối biểu mẫu liên hệ với cơ sở dữ liệu trong PHP?
Đối với điều này, bạn cần làm theo các bước sau. . Bước 1. Lọc các yêu cầu về biểu mẫu HTML của bạn cho trang web liên hệ với chúng tôi. . Bước 2. Tạo cơ sở dữ liệu và bảng trong MySQL. . Bước 3. Tạo biểu mẫu HTML để kết nối với cơ sở dữ liệu. . Bước 4. Tạo một trang PHP để lưu dữ liệu từ dạng HTML vào cơ sở dữ liệu MySQL của bạn. . Bước 5. Tất cả đã được làm xong
Làm cách nào để tạo biểu mẫu email PHP?
Cách tạo biểu mẫu email bằng PHP . Tạo biểu mẫu web. . Tạo tập lệnh biểu mẫu. . Lọc dữ liệu do người dùng gửi. . Gửi email phản hồi. . Cảm ơn người dùng đã phản hồi. . kịch bản cuối cùng |