Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]porównywanie zmiennych z formularza
Forum PHP.pl > Forum > Przedszkole
barbara6
Witam, mam problem. Chce porównać zmienne z formularza( zmienne mieszane liczbowo-tekstowe) i może ktoś mi pomoże i wskaże gdzie mam błąd
Kod
$a=$_POST['haslo'];
$b=$_POST['haslo1'];

if(strpos($a, $b) != false)
{
     echo "podałeś różne hasła!!";
}
else{
     if(isset($_POST['uzytkownik']) && isset($_POST['haslo']) )
{
$polacz=mysql_connect("localhost","root") or die (" nie można polaczyc się z baza");
$db=mysql_select_db("projekt");
$zapytanie="insert into users values('".$_POST['uzytkownik']."','".md5($_POST['haslo'])."')";
$wynik=mysql_query($zapytanie);
}
else
{echo "
Wypełnij wszystkie pola exclamation.gif!";
}

}

Pozdrawiam i z góry dziękuje
Foxx
A dostajesz jakiś komunikat błędu? Czy koniecznie mamy sobie wszyscy zakładać bazę danych i ten skrypt wykonywać u siebie?
blooregard
Z Twojego skryptu:
Cytat
$a=$_POST['haslo'];
$b=$_POST['haslo1'];

if(strpos($a, $b) != false)
{
echo "podałeś różne hasła!!";
}


Z manuala PHP.net (polecam lekturę):
Cytat
strpos

(PHP 4, PHP 5)

strpos — Find position of first occurrence of a string


Pomogę Ci, ale następnym razem czytaj manuale do funkcji, których używasz, ok?

Kod
if(strcmp($a, $b) == 0)


albo po prostu:
Kod
if($a === $b)
barbara6
żaden błąd mi nie wyskoczył, dlatego prosze o pomoc !
skypt wykonuje else.Co do manuala owszem czytałam, Twoje sposoby nie działaja. jestem początkująca zarówno w sferze php jak i tego forum także prosze o wyrozumiałość.
likemandrake
Prosimy również o kod html formularza ^^
pyro
  1. <?php
  2. if(strpos($a, $b) != false)
  3. {
  4. echo "podałeś różne hasła!!";
  5. }
  6. ?>


Działanie: Jeżeli z najdziesz w zmiennej $a ciąg ze zmiennej $b, to znaczy że podałeś złe hasła.

zrob poprostu:

if($a != $b)
blooregard
Cytat
skypt wykonuje else

No jak ma nie wykonywać, skoro warunek w if nie jest spełniony ?
strpos szuka pierwszego WYSTĄPIENA ciągu $b w ciągu $a, a nie porównuje te dwa ciągi (a to nie jest równoznaczne z tym, że te ciągi są jednakowe.
Dla strpos ( "kot ma alę, a ala ma kota","ala" ); wynik będzie równy 16, bo ciąg "ala" występuje w tym drugim ciągu na 16-tej pozycji. A ponieważ boolowska (logiczna) wartość dla 16 to TRUE, warunek będzie spełniony. Ale nie dla tego, co Ty chcesz osiągnąć. Ty chcesz sprawdzić, czy $a (hasło) i $b (powtórzone hasło) jest takie samo, więc musisz porównać, czy $a jest równe $b. Tak? A nie, czy $a występuje w $b.

Więc skoro ($a===$b) nie zwraca Ci TRUE, czyli warunek nie jest spełniony, błąd tkwi w wartości $a i $b. Wyświetl sobie te dwie zmienne i zobacz, czy na pewno są takie same.
Pamiętaj, że operator === oprócz sprawdzenia, czy dwie zmienne są obie równe, sprawdza również, czy są tego samego typu. Spróbuj też warunku ($a==$b)

Edit:poprawiłem, bo mi się pomieszała kolejność parametrów w strpos(). smile.gif
barbara6
Kod
<form action="dodaj.php" method="post">

Użytkownik:</td><td><input type="text" name="uzytkownik" value=""><br>
Hasło</td><td><input type="password" name="haslo" value=""><br>
Powtórz hasło</td><td><input type="password" name="haslo1" value=""><br>


<input type="submit" value="Dodaj">
</form>
<?php
$a=$_POST['haslo'];
$b=$_POST['haslo1'];

if(strpos($a, $b) != false)
{
    echo "podałeś różne hasła!!";
}
else{
    if(isset($_POST['uzytkownik']) && isset($_POST['haslo']) )
{
$polacz=mysql_connect("localhost","root") or die (" nie można polaczyc się z baza");
$db=mysql_select_db("projekt");
$zapytanie="insert into users values('".$_POST['uzytkownik']."','".md5($_POST['haslo'])."')";
$wynik=mysql_query($zapytanie);
}
else
{echo "<br>Wypełnij wszystkie pola exclamation.gif!";
}

}
?>


Tak wygląda z formularzem.

Fraza
Kod
$a==$b

jest zawsze traktowana jako nierówna, mimo że pola są równe. Dlatego próbwałam znależć jakąś funkcje i trafiłam strpos. To może być nitrafione, przyznaje.
blooregard
Skoro $a==$b zwraca false, nie mogą być równe.
Zamień 'password' na 'text', dodaj var_dump($_POST) i sprawdź, czy na pewno wprowadzasz dwa takie same hasła. Może paluszki nie trafiają w te same znaczki ? smile.gif
Foxx
Na pewno tak zrobiłaś:
  1. <?php
  2. if($a != $b)
  3. {
  4.    echo "podałeś różne hasła!!";
  5. }
  6. ?>

questionmark.gif
barbara6
dziękuje wszystkim za pomoc, źle się za to zabrałam ale już działa
Kod
if($a !== $b)
{
    echo "podałeś różne hasła!!";
}
likemandrake
Polecam się biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.