Очень новичок в PHP, почему это не будет работать, если / elseif statemen?

#php

#php

Вопрос:

Я очень новичок в PHP, и я пытаюсь заставить это работать

 <?php
$name =  $_GET['username'];
$pass =  $_GET['password'];
$authcheck = shell_exec("python authcheck.py  $name $pass");
if ( $authcheck == "Correct") {
  exec("python create.py names $name $pass");
} elseif ( $authcheck != "Correct"){
  echo "Incorrect username and password";
  exit;
}
?>
  

Это всегда повторяет elseif часть. Я подумал, может быть, это потому $authcheck , что это не строка, поэтому я сделал $outcome = (string)$authcheck и изменил остальную часть, чтобы использовать $outcome вместо $authcheck , но это не сработало.

Результат скрипта Python точно Correct

Комментарии:

1. Вы проверили, на что ваш ответ $authcheck ?

2. что var_dump показывает редактирование? и что-нибудь из php.net/manual/en/function.error-reporting.php ?

3. Vural, $authcheck (когда я повторяю его) выдает «Правильный»

4. Нет необходимости создавать elseif which проверяет противоположность первоначальному if else вместо этого используйте plain .

5. Попробуйте $authcheck = trim(shell_exec("python authcheck.py $name $pass"));

Ответ №1:

Как я вижу в вашем var_dump, у вас есть пробел в вашей строке: «Правильно». Но вы сравниваете с «Правильным» без пробела. Вы это понимаете? 😉

Комментарии:

1. это уже было указано в комментариях «moi» 😉 итак … «решение» — это то, что здесь конкретно? о да, trim() .

2. Я попытался изменить его на if ( $authcheck == "Correct ") { , но, к сожалению, это не работает

3. О, тогда я замедляюсь. Хорошо для вас. Продолжайте! 😉

4. ну, парень не потрудился рассказать мне что-нибудь о моем вероятном решении, так что привет … больше энергии для тебя 😉

5. @WillB так что же echo $authcheck; печатает?

Ответ №2:

Попробуйте распечатать $authcheck , прежде чем создавать if.

Вы можете распечатать его тремя разными способами:

  • echo $authcheck Это выведет значение $authcheck
  • print_r($authcheck) Это выведет его с форматированным выводом, если $authcheck является объектом или массивом, в противном случае будет выводить то же самое, что и echo.
  • var_dump($authcheck) Это выведет тип и значение $authcheck . Таким образом, теперь вы можете, если $authcheck является строкой или in или NULL

Вы можете сделать то же самое с $name и $pass

Здесь вы можете найти больше информации:

Комментарии:

1. для крика вслух, trim() было решение от moi …… и Шарлотты.