Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk menyahpepijat isu pengesahan input dalam fungsi PHP?

Bagaimana untuk menyahpepijat isu pengesahan input dalam fungsi PHP?

王林
Lepaskan: 2024-04-18 08:36:01
asal
373 orang telah melayarinya

Anda boleh nyahpepijat isu pengesahan input dalam fungsi PHP melalui var_dump(), error_log(), titik putus, pengecualian, dsb. untuk menyemak nilai pembolehubah input, log mesej ralat, melaksanakan kod baris demi baris atau membuang pengecualian.

如何调试 PHP 函数中输入验证问题?

Bagaimana untuk menyahpepijat isu pengesahan input dalam fungsi PHP?

Kes praktikal

Fungsi PHP berikut mengesahkan sama ada data daripada medan teks ialah nombor:

function is_numeric($input) {
  if (!is_string($input)) {
    return false;
  }

  return ctype_digit($input);
}
Salin selepas log masuk

Teknologi penyahpepijatan

1 var_dump()

var_dump() 函数可以帮助你查看输入变量的值。例如:

$input = 'abc';

if (!is_numeric($input)) {
  var_dump($input);
}
Salin selepas log masuk

这将打印如下输出:

string(3) "abc"
Salin selepas log masuk

由此可见,该变量是一个字符串,而不是一个数字。

2. 使用 error_log()

error_log() 函数可以将信息记录到日志文件中。例如:

$input = 'abc';

if (!is_numeric($input)) {
  error_log("Input '$input' is not numeric");
}
Salin selepas log masuk

这样可以将一条错误消息记录到你的日志文件中。

3. 设置断点

对于更复杂的函数,可以使用断点来逐行执行代码并检查变量的值。大多数 IDE 都支持断点,例如:

def is_numeric(input):
    if not isinstance(input, str):
        breakpoint()
        return False

    return input.isdigit()
Salin selepas log masuk

到达断点时,你可以检查 inputvar_dump() boleh membantu anda melihat nilai pembolehubah input. Contohnya:

function is_numeric($input) {
  if (!is_string($input)) {
    throw new InvalidArgumentException("Input must be a string");
  }

  if (!ctype_digit($input)) {
    throw new InvalidArgumentException("Input must be numeric");
  }

  return true;
}
Salin selepas log masuk

Ini akan mencetak output berikut: rrreee Ia boleh dilihat bahawa pembolehubah ialah rentetan, bukan nombor.

2 Gunakan fungsi error_log()🎜🎜🎜error_log() untuk merekod maklumat ke fail log. Contohnya: 🎜rrreee🎜Ini akan log mesej ralat ke fail log anda. 🎜🎜🎜3. Tetapkan titik putus🎜🎜🎜Untuk fungsi yang lebih kompleks, anda boleh menggunakan titik putus untuk melaksanakan kod baris demi baris dan memeriksa nilai pembolehubah. Kebanyakan IDE menyokong titik putus, contohnya: 🎜rrreee🎜Apabila anda mencapai titik putus, anda boleh menyemak jenis dan nilai pembolehubah input. 🎜🎜🎜4. Gunakan pengecualian 🎜🎜🎜Jika pengesahan input gagal, anda boleh membuang pengecualian. Contohnya: 🎜rrreee

Atas ialah kandungan terperinci Bagaimana untuk menyahpepijat isu pengesahan input dalam fungsi PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan