関数を使用してフォームのポストを検証し、データベースに挿入したいと考えています。 私はそれを関数に入れないで行うことができましたが、入力フィールドを検証せずに挿入する関数に入れました。 おかげで、ここでは) は私のコードです:カスタム関数を使用してポストデータをPHPで検証する方法
<?php
function validate_post(){
global $link;
if (isset($_POST['submit'])) {
$error = array();
if (!isset($_POST['cat_title']) || empty($_POST['cat_title'])) {
$error[] = "field cannot be empty";
} else {
//check if a name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z]*$/", $_POST['cat_title'])) {
$cat_err = "Only letters and whitespace allowed";
}
}
//if no errors found
if (empty($error) && empty($cat_err)) {
$cat_title = htmlentities($_POST['cat_title']);
$sql = "INSERT INTO categories(cat_title)VALUES('$cat_title')";
$insert = mysqli_query($link, $sql);
confirm_query($insert);
if (mysqli_affected_rows($link) == 1) {
$post_info = "Category has been added";
redirect("categories.php");
} else {
$post_info = "Adding category failed";
}
} else {
$post_info = "Field cannot be empty";
}
}
}
?>
<?php validate_post(); ?><!-- call validate_post function-->
<!-- ADD CATEGORY FORM -->
<form action="" method="post">
<?php
if(isset($post_info))echo $post_info."<br>";
if(isset($cat_err))echo $cat_err."\n" ?>
<div class="form-group">
<label for="cat_tile">Categories</label>
<input type="text" class="form-control" name="cat_title" id="cat_tile"/>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="+ Add Category" name="submit" >
</div>
</form>
データは、関数に掲載されていませんが、..あなたは、例えば、参照によって関数に '$ _POST'からのデータを渡す必要が役立ちます – Matt
は、ポストデータを関数に渡します。 –
'$ _POST'は、それを関数に渡す必要のないグローバル変数です(関数のfoo($ bar){if(isset($ bar)それを機能の中で使うこと。 – Aron