Я пытаюсь использовать этот код как часть обработки формы:
<?php if(isset($_POST['senderEmail'])) { try { require '_php/_security/validation.php'; //SEE BELOW $rules = array( 'senderEmail' => 'validEmail', 'emailTextbox' => 'validTextbox', ); $validation = new Validation(); if ($validation->validate($_POST, $rules) == TRUE) { require("_php/database/dbProcessing.php"); //Form Proccessing for database inclusion } else { foreach($validation->emailErrors as $error){ $emailErrors[] = $error; $_SESSION['$emailErrors'] = $emailErrors; header('Location:indexmobile.php#emailErrors'); die('ABORT!'); } } } catch (PDOException $e) { $error = 'Error adding elements to database: ' . $e->getMessage(); echo "Error: " . $error; exit(); } exit(); } ?>
Validation.php, где я выполняю мою проверку, имеет следующее:
<?php class Validation { public $errors = array(); public function validate($data, $rules) { $valid = TRUE; foreach ($rules as $fieldname => $rule) { $callbacks = explode('|', $rule); foreach ($callbacks as $callback) { $value = isset($data[$fieldname]) ? $data[$fieldname] : NULL; if ($this->$callback($value, $fieldname) == FALSE) $valid = FALSE; } } return $valid; } public function validEmail($value, $fieldname) { $valid = !empty($value); if ($valid == FALSE) { $this->emailErrors[] = "The $fieldname is required"; return $valid; } else { $valid = filter_var($value, FILTER_VALIDATE_EMAIL); if ($valid == FALSE) $this->emailErrors[] = "The $fieldname needs to be a valid email"; return $valid; } } public function validTextbox($value, $fieldname) { $valid = !empty($value); if ($valid == FALSE) { $this->emailErrors[] = "The $fieldname is required"; return $valid; } else { $whitelist = '/^[a-zA-Z0-9 ,\.\+\\n;:!_\-@]+$/'; $textarea = strip_tags($value); $textarea = mysql_real_escape_string($textarea); $valid = preg_match($whitelist, $textarea); if ($valid == FALSE) $this->errors[] = "The $fieldname contains invalid characters"; return $valid; } } }
После использования этого у меня проблемы с перенаправлением (я думаю). Далее кажется, что Im имеет ошибки в валидации. Мои вопросы таковы:
Спасибо за тех, кто отвечает. Я новичок в PHP и стараюсь изучить язык.
1 – Существует несколько способов передать сообщение на страницу, на которую вы перенаправляете. Один через $_GET
как это
$message="Some message for the next page."; $message=urlencode($message); header("Location:page.php?message=".$message);
затем на стр ..php
if(!empty($_GET['message'])) { $_GET['message']; }
аналогичным образом вы также можете использовать сеанс (менее безопасный)
$_SESSION['message']='some other message';
затем на стр ..php
if (!empty($_SESSION['message'])) { echo $_SESSION['message']; unset($_SESSION['message']); }
сif (!empty($_SESSION['message'])) { echo $_SESSION['message']; unset($_SESSION['message']); }
2 – Мне нужно будет увидеть, что вы передаете в свою функцию validate
. Вы должны сделать var_dump
$_POST
и добавить это к вашему вопросу.
3 – Это зависит от ваших критериев. Если вы просто проверяете на пустоту свой избыток. Я не знаю, какой текст вам нужен / считается действительным, но регулярное выражение является разумным способом обеспечения проверки.
4 – См. № 2.