PHP - сравнить две переменные - PullRequest
0 голосов
/ 15 марта 2011

У меня есть этот код

<?php

ob_start();
header("Content-Type: text/html; charset=ISO-8859-1");

$campo = $_GET['campo'];
$valor = $_GET['valor'];
$hello;

    if ($campo == "myPassword") {
        if (!preg_match("/^\S{4,12}$/", $valor)) {
            echo "Tamanho entre 4 e 12 letras e sem espaços";
        }
        else 
            $hello = $valor; //problem here
            echo $hello;
    }

if ($campo == "passwordMatch") {
    if ($hello != $valor ) {
        echo "Passwords don't match";
    }
}

?>

, поэтому мне нужно сохранить переменную (где я поставил «проблема здесь») и сравнить ниже, но этот код не сделалне работает, и я не знаю, почему

Ответы [ 4 ]

1 голос
/ 15 марта 2011

Я бы предложил использовать для сравнения строки справочник: http://php.net/manual/en/function.strcmp.php

if(strcmp($str1,$str2)):
endif;

или

if(!strcmp($str1,$str2)):
endif;

и замените ваш код этим

if (!preg_match("/^\S{4,12}$/", $valor)) {
            echo "Tamanho entre 4 e 12 letras e sem espaços";
        }
        else {
            $hello = $valor; //problem here
            echo $hello;
       }
0 голосов
/ 21 мая 2016

У меня была такая же проблема, оказалось пустое пространство, я использовал trim($myVar);, чтобы исправить.

0 голосов
/ 15 марта 2011

Похоже, у вас есть проблема с синтаксисом:

if ($campo == "myPassword") {
        if (!preg_match("/^\S{4,12}$/", $valor)) {
            echo "Tamanho entre 4 e 12 letras e sem espaços";
        } else {  // missing bracket
            $hello = $valor; //problem here
            echo $hello;
            } // missing bracket
    }

Это твоя проблема? Ваш ELSE пропустил открытие { и закрытие }.

1010 * ТАКЖЕ *

Для сравнения строк следует использовать ===, а не числовое ==

Подробности здесь:

0 голосов
/ 15 марта 2011

Если вы ожидаете, что $hello выживет между загрузками страниц, вам не повезло.

Вместо этого вам нужно будет сохранить переменную между сессиями самостоятельно.

Кстати, строка $hello; ничего не делает.

Редактировать Причина, по которой я предположил, что вам нужны сеансы, заключается в том, что вы установили$hello только тогда, когда $campo == "newPassword", а затем ожидать, что это будет определенное значение, только когда $campo == "passwordMatch".Вы никогда не измените значение $campo, и, очевидно, это не может быть и то и другое.Это подразумевает, что две части логики должны работать на отдельных страницах загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...