2

私は基本的に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');
    }
?>
4

2 に答える 2

1

リターンインを作成するか、参照noNumbersを渡す必要があります。$value

戻り方法:

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したがって、関数内の変数に発生することはすべて、渡された変数に発生します。

于 2012-08-19T14:13:51.960 に答える
0

上記のコードスニペットでは、関数noNumbersは値を返しません。関数に渡される引数は、その関数内でのみスコープを持ち、関数を呼び出すためにその値を使用できるようにするには、関数内にreturnステートメントが必要です。呼び出し元の関数に値を渡します。または、参照によって関数に値を渡すこともできます。

于 2012-08-19T14:21:40.003 に答える