Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Nie działa]Rejestracja
Forum PHP.pl > Forum > Gotowe rozwiązania
klozz
Czy ktoś może mi podpowiedzieć dlaczego to mi nie chodzi :?: Teoretycznie powinno, ale coś się wali i wyskakuje za każdym razem "Login jest wolny!.." :?

[php:1:cb6d8acb60]<?php
include("admin/config.php");
include("nowy.php");
gora();
$login = $_POST["login"];
@mysql_connect($db_host, $db_admin, $db_pass) or die("Nie można połączyć się z MySql.");
@mysql_select_db($db_name) or die("Nie można połączyć się z bazą.");
$sql = mysql_query("SELECT * FROM users WHERE login='$login'");
$num = mysql_num_rows($sql);
if($num == 1) {
echo"Login jest już zarejestrowany.";
}
else if($num == 0) {
echo"Login jest wolny! <A HREF='dalej.php'">Kliknij tutaj</A>";
}
?>[/php:1:cb6d8acb60]
Pomocy...



[ UTFPHPBBCODE - Use The Fu****g php BBCode winksmiley.jpg))))) - Seth]
Jabol
a nie powinno być elseif zamiast else if?
klozz
Cytat
a nie powinno być elseif zamiast else if?

Nawet po zmianie nie działa... A i Seth dzieki za zmiany smile.gif
spenalzo
A zamień $_POST na $HTTP_POST_VARS - jak masz starszą wersję PHP4.
I usuń @ sprzed funkcji, może to one sie wywalają.
klozz
Nadal nie chodzi, nawet po zmianie, a co do php to mam nowszą wersję a co do "@" to z innymi skryptami działa idealnie więc nie powinno wywalać errorów :? Więc co się dzieje :?: Bo nie mam pojęcia...
Fo
a moze bys jednak usunal to "@" i zobaczyl jaki ci sie blad pokaze ... :wink: jak jest to bald skladni to napewno pokaze sie komunikat, a jesli np. zle dopisuje do bazy login albo zle przesyla jakas zmienna ? usun najpierw to @ i powiedz jaki jest komunikat aaevil.gif

edit: heh bylem pierwszy spenalzo :wink:
spenalzo
Usuń @ i napisz czy coś wyskakuje. Jasnowidzeniem służę na audiotele.
klozz
Po usunięciu '@' skrypt nie działa poprawnie... Wywala cały czas "Login jest wolny!..." :? Nie mam pojęcia dla czego to nie działa...
DeyV
Cytat
a nie powinno być elseif zamiast else if?


Cytat
W php można też napisać 'else if' (dwoma słowami) zamiast 'elseif' (jednym słowem). Z punktu widzenia składni języka, wyrażenia te różnią się od siebie (jeśli znasz się na C, jest to ta sama różnica co w C), jednak wynik ich działania jest ten sam.  
lisu
Kod
"WHERE login LIKE '$login'"
klozz
Cytat
Kod
"WHERE login LIKE '$login'"

Nadal guzik :?
Fo
[php:1:8fab9c0070]echo"Login jest wolny! <A HREF='dalej.php'">Kliknij tutaj</A>";[/php:1:8fab9c0070]
a dlaczego ja widze ze skladnie php mowi na samym koncu ze jest zle ?
masz kolo <A HREF='dalej.php' taki znaczek " usun go i zobacz czy nie jest ok... ok ? ma byc wiec tak :[php:1:8fab9c0070]echo "Login jest wolny! <A HREF='dalej.php'>Kliknij tutaj</A>";[/php:1:8fab9c0070] sprawdz czy chodzi i powiedz :wink:
klozz
Ten błędzik zauważyłem już dawno, i nawet po poprawieniu nie diała :?
Fo
dobra no to nie pozostaje nic innego jak to zebys umiescil jeszcze plik ktory sluzy za przesylanie zmiennej do tego co juz napisales ale nie dziala, moze to klopot ze zmienna jednak jest... :?:
klozz
Oki. Tutaj macie formularz biggrin.gif
[php:1:38245711fe]<?php
<?
include("nowy.php");
gora();
echo "<FORM ACTION="rejestracja.php" METHOD="POST">
Login: <INPUT TYPE="TEXT" NAME="login"><BR>
Hasło: <INPUT TYPE="PASSWORD" NAME="pass"><BR>
Email: <INPUT TYPE="TEXT" NAME="email"><BR>
Login: <INPUT TYPE="TEXT" NAME="login"><BR>
<INPUT TYPE="SUBMIT" VALUE="Wyślij"></FORM>";
dol();
?>
?>[/php:1:38245711fe]
lisu
no jak masz dwa razy pole login w formularzu to moga byc problemy.
spenalzo
Cytat
Kod
"WHERE login LIKE '$login'"

Taki kod jest niepoprawwny z punktu widzenia bezpieczeństwa: powiedzmy że są zarejestrowani użytkownicy o nazwie spen i spenalzo. Dziwnym zbiegiem okoliczności mają takie samo hasło - i co? Użytkownik spen może zalogować się na konto spenalzo... W przypadku logowania musi byc WHERE login='$login'.
Można zrobic jeszcze tak (modyfikacja pierwszeo kodu):
[php:1:c4fee491d0]<?php
$sql = mysql_query("SELECT * FROM users WHERE login='$login' LIMIT 1");
$_t=mysql_fetch_array($sql);
if($_t["login"]==$_POST["login"])
{
echo"Login jest już zarejestrowany.";
}
else
{
echo"Login jest wolny! <A HREF='dalej.php'>Kliknij tutaj</A>";
}
?>[/php:1:c4fee491d0]
Masz od razu jeszcze jedno zabezpieczenie.
Zobacz czy to będzie działać.
lisu
Cytat
Cytat
Kod
"WHERE login LIKE '$login'"

Taki kod jest niepoprawwny z punktu widzenia bezpieczeństwa: powiedzmy że są zarejestrowani użytkownicy o nazwie spen i spenalzo.
....


Moj blad, przyznaje sie bez bicia.

---- ponizej edytowane ----
Chociaz nie wiem czemu uwazasz ze to blad ?

utworzylem tabele z polem login, wykonalem zapytanie
Kod
SELECT *

FROM `users`

WHERE login

LIKE 'jozek'  

i phpmyadmin wywalilo mi tylko 1 rekord, pomimo ze w tabeli mam 'jozeka', 'jozekaaaaaa'.
Czy jedyna roznica pomiecy LIKE i = jest :
Cytat
If you are comparing case-insensitive strings with any of the standard operators (=, <>..., but not LIKE) trailing whitespace (spaces, tabs and newlines) will be ignored.

Aha, no i czemu zapytanie
Kod
SELECT *

FROM `users`

WHERE login = 'jozek'
wywala pusta odpowiedz pomimo ze w tabeli mam 'jozek' ?
klozz
Lisu, co ja bym bez ciebie zrobił... Bo już chciałem wyrzucić kompa przez okno 8) Nie zauważyłem że są dwa pola "login"... Thx biggrin.gif A tak oftopic to fajne dyskusje mozna wywolac laugh.gif
spenalzo
Cytat
Moj blad, przyznaje sie bez bicia.

---- ponizej edytowane ----
Chociaz nie wiem czemu uwazasz ze to blad ?

Tym razem mój błąd: poniższy kod
Kod
"WHERE login LIKE '$login'"

nie da takiej sytuacji jak opisałem powyżej, ale taki kod już tak:
Kod
"WHERE login LIKE '%$login%'"

znak procenta powoduje, że szukane są ciągi które zawierają także (a nie tylko) wyrażenie zawarte w zmiennej $login, tzn. że wartość zmiennej może być otoczona innymi znakami. Sorry za zamieszanie.
lisu
No to mnie uspokoiles
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.