Обнаружена ошибка разбора в php

Я новичок в php. Поэтому я просто перевел свой код Java на php.

Это говорит

Ошибка разбора: синтаксическая ошибка, неожиданный "счетчик" (T_STRING) в D:\files\xampp\htdocs\try.php в строке 15.

Вот мой код:

<form action="" method = "POST">

Enter the first number: <input type="number" name="FirstNum" required><br><br>

<input type = "submit" value = "Enter"/>
</form>


<?php
int counter = 0;
while (counter < 1) {

switch($_POST['FirstNum'])
{
case "1":
echo "Addition";
counter++; break;
case "2":
echo "Subtraction";
counter++; break;
case "3":
echo "Multiplication";
counter++; break;
case "4":
echo "Division";
counter++; break;
default:
echo "Invalid Operation";
}
}
?>

2 ответа

Решение

Переменные PHP всегда начинаются с $ знак, поэтому всякий раз, когда вы используете переменную $ Знак обязателен.

Исправленный код выглядит так:

<?php
$counter = 0;
while ($counter < 1) {

switch($_POST['FirstNum'])
{
case "1":
echo "Addition";
$counter++; break;
case "2":
echo "Subtraction";
$counter++; break;
case "3":
echo "Multiplication";
$counter++; break;
case "4":
echo "Division";
$counter++; break;
default:
echo "Invalid Operation";
}
}
?>

Сообщение об ошибке, которое цитирует OP, относится к самому первому утверждению:

int counter = 0;

в котором код пытается объявить тип переменной. Тем не менее, пользователям PHP это делать не нужно, так как PHP определяет тип переменной на основе ее значения. Однако, если вы исключите "int", выполните следующие действия:

 counter = 0;

код все еще ошибается, потому что в PHP имя переменной состоит из голого слова и символа в виде предварительно добавленного знака доллара. Правильное исправление для первого утверждения выглядит следующим образом:

 $counter = 0; 

Важно: всегда рассматривайте данные, предоставленные пользователем, как подозрительные. Вместо непосредственного использования $_POST['FirstNum'] нужно проверить, что он содержит действительные данные. Рассмотрим следующее решение:

<?php
if (isset($_POST['submit'])) {
  $cleanFirstNum =  (ctype_digit($_POST['FirstNum']) )? $_POST['FirstNum'] : "0";
  $counter = 0;
  while ($counter++ < 1) {
    switch( $cleanFirstNum )
    {
      case "1":
        echo "Addition";
        break;
      case "2":
        echo "Subtraction";
        break;
      case "3":
        echo "Multiplication";
        break;
      case "4":
        echo "Division";
        break;
      default:
        echo "Invalid Operation";
        break;
    }   
  }
}
?>

Если $cleanFirstNum не является числовым, то он получает значение ноль и выполняется код по умолчанию.

Обратите внимание, что с помощью элемента input типа number вы можете указать минимальное и максимальное значения, чтобы ограничить пользовательские параметры. Код бэкэнда в этом примере гарантирует, что если кто-либо подделает форму, вы сможете избежать недействительных данных, которые будут иметь вредный эффект.

<html>
<head><title>testing</title></head>
<body>
<form action="" method = "POST">
Enter the first number: <input type="number" min="1" max="4" name="FirstNum" required><br><br>

<input type="submit" name="submit" value="Enter"/>
</form>
</body>
</html>


Наконец, последнее беспокойство: должен ли код OP использовать PHP или может быть более подходящим JavaScript (см. Соответствующий пример здесь)?

Популярный ресурс PHP: Руководство

Другие вопросы по тегам