当我开始遇到问题清理然后执行进一步验证时,我基本上正在使用OOP并创建一种验证和清理输入的方法。我正在寻找的是获取发布的$_POST['name']
数据,清理输入以删除任何数字并验证剩下的数据既不是null
也不是数字字符。
但是我无法将已清理的输入保存到$sanitised
,它似乎是空的,但是当我替换
$sanitised=$fv->noNumbers($_POST['name']);
与
$sanitised=preg_replace('/[0-9]/', '', $_POST['name']);
一切正常,所以我认为我在这个$sanitised
变量中弄乱了一些东西。
我想学习所以要么解决这个问题,要么“你是个白痴并且做错了”将不胜感激。
<?php
class formSanitise {
public function noNumbers($value) {
$value = preg_replace('/[0-9]/', '', $value);
}
public function isEmpty($value) {
return (!isset($value) || trim($value) == '') ? true : false;
}
public function isAlpha($value) {
return preg_match('/[^a-z]/i', $value) ? false : true;
}
?>
processor.php
<?php
include('class.formSanitise.php');
$fv = new formSanitise();
$sanitised= $fv->noNumbers($_POST['name']);
if ($fv->isEmpty($sanitised)) {
$fv->addError('Name', 'Please enter something');
}
if (!$fv->isAlpha($sanitised)) {
$fv->addError('Name', 'Please enter your name');
}
?>
答案 0 :(得分:1)
您需要在noNumbers
中创建return或通过$value
by reference。
退货方式:
public function noNumbers($value) {
return preg_replace('/[0-9]/', '', $value);
}
参考
public function noNumbers(&$value) {
$value = preg_replace('/[0-9]/', '', $value);
}
returning
一个值意味着$value
是一个完全不同的变量,并且当它从函数返回时将被分配给$sanitized
。通过引用传递意味着$value
是与您传递给noNumbers
的完全相同的变量,因此,函数内部变量发生的任何事件都会发生在传入的变量。
答案 1 :(得分:0)
在上面的代码片段中,函数noNumbers不返回任何值。传递给函数的参数只在该函数中有一个范围,为了使该值可用于调用函数,函数中必须有一个return语句。将值返回给调用函数。或者,您可以通过引用将值传递给函数。