Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]porównywanie zmiennych z formularza
barbara6
post 16.02.2009, 22:27:58
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 3.02.2009

Ostrzeżenie: (0%)
-----


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

Ten post edytował erix 16.02.2009, 23:57:18
Powód edycji: [erix] na przyszłość pamiętaj o tagu tematu
Go to the top of the page
+Quote Post
Foxx
post 16.02.2009, 22:46:45
Post #2





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


A dostajesz jakiś komunikat błędu? Czy koniecznie mamy sobie wszyscy zakładać bazę danych i ten skrypt wykonywać u siebie?
Go to the top of the page
+Quote Post
blooregard
post 16.02.2009, 22:50:17
Post #3


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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)


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
barbara6
post 16.02.2009, 23:09:58
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 3.02.2009

Ostrzeżenie: (0%)
-----


ż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ść.
Go to the top of the page
+Quote Post
likemandrake
post 16.02.2009, 23:23:53
Post #5





Grupa: Zarejestrowani
Postów: 175
Pomógł: 17
Dołączył: 23.06.2006

Ostrzeżenie: (0%)
-----


Prosimy również o kod html formularza ^^


--------------------
serwiswww.pl
Go to the top of the page
+Quote Post
pyro
post 16.02.2009, 23:26:38
Post #6





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


  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)

Ten post edytował pyro 17.02.2009, 13:33:19


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
blooregard
post 16.02.2009, 23:31:22
Post #7


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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

Ten post edytował blooregard 16.02.2009, 23:36:11


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
barbara6
post 16.02.2009, 23:34:36
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 3.02.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
blooregard
post 16.02.2009, 23:38:20
Post #9


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
Foxx
post 16.02.2009, 23:38:34
Post #10





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Na pewno tak zrobiłaś:
  1. <?php
  2. if($a != $b)
  3. {
  4.    echo "podałeś różne hasła!!";
  5. }
  6. ?>

questionmark.gif
Go to the top of the page
+Quote Post
barbara6
post 16.02.2009, 23:40:52
Post #11





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 3.02.2009

Ostrzeżenie: (0%)
-----


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!!";
}
Go to the top of the page
+Quote Post
likemandrake
post 16.02.2009, 23:57:55
Post #12





Grupa: Zarejestrowani
Postów: 175
Pomógł: 17
Dołączył: 23.06.2006

Ostrzeżenie: (0%)
-----


Polecam się biggrin.gif


--------------------
serwiswww.pl
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:15