szefol7
19.09.2006, 15:00:35
Czy jest jakas roznica pomiedzy wpisywaniem danych i przesylaniem ich za pomoca POST pomiedzy "text" a "password" ?
Wpisuje cos takiego zeby sprawdzic czy uzytkownik wpisal haslo:
if ($haslo=="")
{
echo "Musisz wpisac haslo!";
exit;
}
Ale nawet jeżeli nie wpisze hasla to wyskakuje jak by wszystko bylo dobrze wpisane.
Kiedy tak samo sprawdzam np. login, czy imie czy nazwisko, wszystko dziala dobrze tak jak bym chcial, nie dziala tylko przy hasle.
Moje pytanie wiec brzmi czy jest roznica pomiedzy przesylaniem "TEXT" i "PASSWORD" w formularzu.
P.S.
Pewnie jest jakis lepszy sposob na zrobienie tego, takze jezeli ktos by mial jakies sugestie to byl bym wdzieczny.
Z gory dziekuje!
dr_bonzo
19.09.2006, 15:30:03
Oba pola formularzy roznia sie tylko sposobem wyswietlania swojej zawartosci: text -- pokazuje wpisany text, a password gwiazdki. To wszystko. Haslo do php przyjdzie w postaci tekstu.
bro_da
19.09.2006, 15:33:23
różnica jest taka, że jak wpisujesz w password to hasło jets pod gwiazdkami... a w zwykłym input type text masz jawny tekst...
pozdro
szefol7
19.09.2006, 15:56:26
W takim razie czy ktos mogl by rzucic okiem na to co tutaj nawypisywalem i napisac dlaczego to nie dziala, bo juz nie mam pojecia. Jakiekolwiek haslo nie wpisze pokazuje, ze wszystko jest ok, tak samo z reszta jak go w ogole nie wpisze.
Jezeli ktos moze napisac dlaczego to nie dziala, jak rowniez czy moze jest jakis lepszy sposob na zrobienie tego.
Z gory dziekuje i pozdrawiam!!!
Moj kod w pliku index2.php:
<html>
<head>
<title>Witryna o filmach</title>
</head>
<body>
<b><align=right>
<?php
//Skrypt wyświetla aktualny dzień tygodnia po polsku
$day=date(w);
$dnitygodnia=array ("Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piatek","Sobota");
echo "$dnitygodnia[$day],";
//Wstawia ktory mamy dzien miesiaca miedzy dzien a miesiac
$ktory=date("j");
echo " $ktory ";
//Dni miesiąca po polsku z użyciem tablicy
$month=date(n)-1;
$miesiace=array ("Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpirń","Wrzesień","Październik","Listopad","Grudzień");
echo "$miesiace[$month] ";
//Wstawia rok
$rok=date("Y");
echo "$rok r.";
?>
</b></center>
<table align=left border="0">
<td>
<form action=logowanie.php method=post>
<br><br>
Login:<br>
<input type=text name=login>
<br>
Imię:<br>
<input type=text name=imie>
<br>
Nazwisko:<br>
<input type=text name=nazwisko>
<br>
Hasło:<br>
<input type=password name=haslo>
<br>
Powtórz hasło:<br>
<input type=password name=haslo2>
<br><br>
<INPUT TYPE=SUBMIT VALUE="Zarejestruj">
</form>
</td>
</table>
</body>
</html>
Kod w pliku logowanie.php:
<html>
<head>
<title>Witryna o filmach</title>
</head>
<body>
<?php
$login=$_POST[login];
$imie=$_POST[imie];
$nazwisko=$_POST[nazwisko];
$haslo=$_POST['haslo'];
$haslo2=$_POST['haslo2'];
//Sprawdzanie czy dane zostaly wprowadzone poprawnie
if ($login=="")
echo "Musisz wpisać login!";
if ($imie=="")
echo "Musisz wpisać imię!";
if ($nazwisko=="")
echo "Musisz wpisać nazwisko";
if ($login=="" or $imie=="" or $nazwisko=="")
exit;
if ($haslo="")
{
echo "<b>Wpisane hasła różnią się od siebie bądź nie zostały wpisane! <BR>Oba wpisywane hasła muszą być jednakowe!</b>";
exit;
}
if ($haslo2="")
{
echo "<b>Wpisane hasła różnią się od siebie bądź nie zostały wpisane! <BR>Oba wpisywane hasła muszą być jednakowe!</b>";
exit;
}
echo "To jest haslo1: $haslo, a to jest haslo 2: $haslo2, a to imie: $imie";
$connect=mysql_connect(localhost,root,krasnal) or die ("Błąd połączenia z bazą danych!");
mysql_select_db(uzytkownicy) or die ("Nie mozna polaczyc z baza danych uzytkownicy!");
$insert="INSERT INTO logowanie (Login,imie,nazwisko,haslo)"."VALUES ('$login','$imie','$nazwisko','$haslo2')";
$results=mysql_query($insert) or die (mysql_error());
echo "Dane wprowadzone poprawnie!";
?>
</body>
</html>
OK, juz doszedlem, napisalem jeszcze raz od nowa i dziala, czyli tam musialem cos namieszac.
P.S.
Ogolnie widac chyba moj zamysl, wiec jak ktos ma lepszy pomysl na sprawdzanie czy zostaly wpisane dane czy pola zostaly zostawione puste, to prosze o napisanie kilku slow.
Z gory dzieki!!!
nospor
19.09.2006, 20:06:51
<?php
if ($haslo="")
?>
Operatorem porownania jest == a nie = ....
Prosze uzywac bbcode!!!proszę poprawić tytuł o znacznik zgodnie z zasadami forum Przedszkole:
Temat: Tematyka i zasady panujace na forum Przedszkole
=kokos=
19.09.2006, 20:52:18
Zamiast tych warunków
<?php
//Sprawdzanie czy dane zostaly wprowadzone poprawnie
if ($login=="")
echo "Musisz wpisać login!";
if ($imie=="")
echo "Musisz wpisać imię!";
if ($nazwisko=="")
echo "Musisz wpisać nazwisko";
if ($login=="" or $imie=="" or $nazwisko=="")
?>
możesz zastąpić je jednym
<?php
if(!$login || !$imie || !$nazwisko)
{
echo "Nie podano wszystkich danych": }
?>
Chociaż to można sprawdzić za pomocą JS zanim jeszcze wyślesz formularz w taki sposób.
function sprawdz (){
var brak_danych = false;
var formularz = document.forms[0];
var napis = "";
if (formularz.imie.value == ""){
napis += "imie\n"
brak_danych = true;
}
if (formularz.nazwisko.value == ""){
napis += "nazwisko\n"
brak_danych = true;
}
if (formularz.login.value == ""){
napis += "login\n"
brak_danych = true;
}
.
.
.
if (formularz.haslo.value != formularz.haslo2.value){
alert ("Wpisane hasła różnią się");
return false;
}
if (!brak_danych)
return true;
else
alert ("Nie wypełniłeś następujących pól:\n" + napis);
return false;
}
i oprócz tego w znaczniku <form> wpisujesz zdarzenie onSubmit="sprawdz()"
Jeżeli ktoś się pomyli nie będzie zmuszony wpisywać wszystkich pól na nowo tylko uzupełni te, których nie wpisał lub zweryfikuje błąd związany z hasłem
Z hasłem po wysłaniu możesz zrobić tak
<?php
if($haslo != $haslo2) { echo "Wpisane hasła różnią się"; exit;} ?>
i jeszcze przy rejestracji warto sprawdzić czy login wpisany przez uzytkownika nie jest już uzywany.
<?php
?>
phpion
20.09.2006, 09:35:27
A ja troszke zmodyfikowalbym sprawdzanie czy podany login juz istnieje. Otoz w twoim przypadku zostanie wykonanie 1 zapytanie (jesli istnieje to dodanie nie bedize wykonane) lub 2 (jesli nie istnieje trzeba go dodac). Wg mnie lepiej nadal polu login w bazie UNIQE i od razu probowac go dodawc do bazy. Jesli wystapic blad (nie pamietam nr) to login juz jest zarejestrowany. Jesli nie wystapi blad to jest ok. Czyli wszystko zalatwimy 1 zapytaniem.