You should mention the label can't be a variablegoto
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
goto
Референца за `control-structures.goto.php` со подобрена типографија и навигација.
goto
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Некои од горенаведените примери се поврзани со специфичен сервер за бази на податоци, но тоа не значи дека сличен напад е невозможен против други производи. Вашиот сервер за бази на податоци може да биде слично ранлив на друг начин. Сликата е со дозвола од
На goto оператор може да се користи за скок на друг дел во програмата. Целната точка е специфицирана со case-sensitive етикета проследена со двоеточие, а инструкцијата е дадена како
goto проследена со посакуваната целна етикета. Ова не е целосно неограничено goto. Целната етикета мора да биде во истата датотека и контекст, што значи дека не можете да скокнете надвор од функција или метод, ниту пак можете да скокнете во нив. Исто така, не можете да скокнете во било каков вид на циклус или структура на префрлување. Можете да скокнете надвор од нив, а честа употреба е да се користи goto
наместо повеќе нивоа break.
Пример #1 goto example
<?php
goto a;
echo 'Foo';
a:
echo 'Bar';
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Bar
Пример #2 goto пример за циклус
<?php
for ($i = 0, $j = 50; $i < 100; $i++) {
while ($j--) {
if ($j == 17) {
goto end;
}
}
}
echo "i = $i";
end:
echo 'j hit 17';
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
j hit 17
Пример #3 Ова нема да работи
<?php
goto loop;
for ($i = 0, $j = 50; $i < 100; $i++) {
while ($j--) {
loop:
}
}
echo "$i = $i";
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Fatal error: 'goto' into loop or switch statement is disallowed in script on line 2
Белешки од корисници 4 белешки
the problem of goto is that it is a good feature but in a large codebase it reduces the readability of the code . that's all . i try to not use it to think about the person who is going to read after me .You can use goto to hide large HTML blocks without using echo():
<html><body>
<?php if ($hide_form_and_script) { goto label_1;} ?>
<form action="" method="post">
<!-- some HTML here -->
</form>
<script>
let a='test'; // no need to escape nested quotes as with echo()
// some JavaScript here
</script>
<?php label_1: ?>
</body></html>