Forum » Izdelava spletišč » [PHP] Registracija uporabnika
[PHP] Registracija uporabnika
bluefish ::
Imam sledečo kodo, ki podatke pridobi iz obrazca s poljema username in password (name parameter).
Po potrditvi pa se skripta ustavi in javi 1Query failed!. Pregledal sem že tisti del kode na katerega se die nanaša, pa ne najdem napake.
Pomoč?
Po potrditvi pa se skripta ustavi in javi 1Query failed!. Pregledal sem že tisti del kode na katerega se die nanaša, pa ne najdem napake.
Pomoč?
<?php error_reporting(E_ALL); session_start(); if(!get_magic_quotes_gpc()) { $username = strval(mysql_escape_string($_POST['username'])); $password = strval(mysql_escape_string($_POST['password'])); } else { $username = strval($_POST['username']); $password = strval($_POST['password']); } require_once("data.php"); $errors = array(); $validation = false; mysql_pconnect($host, $user, $password) or die("Failed to connect!"); mysql_select_db($database) or die("Failed to select!"); if($username == '') { $errors[] = 'Username missing!'; $validation = true; } if($password == '') { $errors[] = 'Password missing!'; $validation = true; } if($username != '') { $sql = "SELECT FROM users WHERE username = '$username'"; $result = mysql_query($sql); if($result) { if(mysql_num_rows($result) > 0) { $errors[] = 'Username already in use!'; $validation = true; } @mysql_free_result($result); } else { die("1Query failed!"); } } if($validation) { $_SESSION['ERRORS'] = $errors; session_write_close(); header("location: register.php"); exit(); } $sql = "INSERT INTO users(username, password) VALUES('username', '".md5($_POST['password'])."')"; $result = @mysql_query($sql); if($result) { header("location: login.php"); exit(); } else { die("2Query failed!"); } ?>
- spremenil: Ziga Dolhar ()
Ziga Dolhar ::
Hmm, sicer že doooolgo nisem programiral, z direktnim queryanjem se še dlje nisem ukvarjal, ampak - if($result)?
-- edit: Disregard.
Raje dopiši echo $query, da vidimo kaj pošiljaš.
-- edit: Disregard.
Raje dopiši echo $query, da vidimo kaj pošiljaš.
https://dolhar.si/
Zgodovina sprememb…
- spremenil: Ziga Dolhar ()
bluefish ::
@Ziga Dolhar: v katero vrstico to dopišem? Verjetno misliš na echo $result?
Dejansko sem bolj ko ne začetnik v PHPju.
Dejansko sem bolj ko ne začetnik v PHPju.
Ziga Dolhar ::
Začenši s tvojo 51. vrstico:
die("1Query failed!"); var_dump($sql); var_dump(mysql_error());
https://dolhar.si/
Zgodovina sprememb…
- spremenil: Ziga Dolhar ()
Ziga Dolhar ::
Aja, bučman jest.
var_dump($sql); var_dump(mysql_error()); die("1Query failed!");
https://dolhar.si/
bluefish ::
string(40) "SELECT FROM users WHERE username = 'ime'" string(179) "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM users WHERE username = 'ime'' at line 1" 1Query failed!
Ziga Dolhar ::
Well - Select WHAT exactly? :-) V bistvu te je že Crusty zgoraj na to napotil, le da se mi ni sanjalo, kaj hoče povedat.
Torej - za začetek, "SELECT *" recimo (čeprav to ni najboljša praksa, ampak za začetek bo v redu.)
Torej - za začetek, "SELECT *" recimo (čeprav to ni najboljša praksa, ampak za začetek bo v redu.)
https://dolhar.si/
misek ::
$sql = "SELECT username, password FROM users WHERE username = '$username'";
ali pa kar
$sql = "SELECT username FROM users WHERE username = '$username'";
ali pa kar
$sql = "SELECT username FROM users WHERE username = '$username'";
Zgodovina sprememb…
- spremenil: misek ()
bluefish ::
Jp, to pomaga. Samo kaj, ko sem že pred novim problemom. Namesto vnesenega v obrazec mi v bazo shrani vrednost username.
Sem ga kje polomil pri navednicah?
Sem ga kje polomil pri navednicah?
misek ::
Manjka ti znak $ pred username:
$sql = "INSERT INTO users(username, password) VALUES('$username', '".md5($_POST['password'])."')";
$sql = "INSERT INTO users(username, password) VALUES('$username', '".md5($_POST['password'])."')";
bluefish ::
Veselje žal ni dolgo trajalo. Sedaj se zatakne pri kodi za prijavo - tokrat tudi brez kakršnegakoli opozorila.
Obrazec za prijavo le skoči v datoteko v kateri je php koda. Prav tako je vseeno, ali sta geslo in ime pravilna ali ne.
Obrazec za prijavo le skoči v datoteko v kateri je php koda. Prav tako je vseeno, ali sta geslo in ime pravilna ali ne.
<?php error_reporting(E_ALL); session_start(); if(!get_magic_quotes_gpc()) { $username = strval(mysql_escape_string($_POST['username'])); $password = strval(mysql_escape_string($_POST['password'])); } else { $username = strval($_POST['username']); $password = strval($_POST['password']); } require_once("data.php"); $errors = array(); $validation = false; mysql_pconnect($host, $user, $password) or die("Failed to connect!"); mysql_select_db($database) or die("Failed to select!"); if($username == '') { $errors[] = 'Username missing!'; $validation = true; } if($password == '') { $errors[] = 'Password missing!'; $validation = true; } if($validation) { $_SESSION['ERRORS'] = $errors; session_write_close(); header("location: login.php"); exit(); } $sql = "SELECT * FROM users WHERE username = '$username' AND password = '".md5($_POST['password'])."'"; $result = mysql_query($sql); if($result) { if(mysql_num_rows($result) == 1) { session_regenerate_id(); $user = mysql_fetch_assoc($result); $_SESSION['ID'] = $user['id']; session_write_close(); header("location: panel.php"); exit(); } else { header("location: login.php"); exit(); } } else { die("Query failed!") } ?>
Zgodovina sprememb…
- spremenil: bluefish ()
Ziga Dolhar ::
S telefona zal ne vidim celotne kode, ampak vseeno - iz kje se to ucis? Ker tule je ful velik zloo slabih praks.
https://dolhar.si/
bluefish ::
Del kode glede same prijave in registracije sem gledal po tem: http://phpsense.com/php/php-login-scrip...
Glede na povedano domnevam, da se podobne prakse pojavljajo tudi pri kodi za registracijo?
Glede na povedano domnevam, da se podobne prakse pojavljajo tudi pri kodi za registracijo?
Ziga Dolhar ::
Aja, dej kodo prosim v st.koda php tag. Debuggas pa s postavljanjem 'echo' (sam imam raje var_dump()) konstruktov na strateska mesta, da opazujes potek programa in vrednosti spremenljivk.
https://dolhar.si/
bluefish ::
Sem poskusil z vstavljanjem teh ukazov, pa bodisi ne navajam pravih spremenljivk ali pa postavljam na napačna mesta.
Skratka, v temle sem čisto zgubljen.
Skratka, v temle sem čisto zgubljen.
misek ::
Na različna mesta dodaj
echo 'line: ' . __LINE__;
da vidiš, kako ti poteka program. Pa izpiši vsebino spremenljivk, npr.
echo 'username: ' . $username;
A vsebina panel.php bi se morala prikazati po uspešni prijavi?
echo 'line: ' . __LINE__;
da vidiš, kako ti poteka program. Pa izpiši vsebino spremenljivk, npr.
echo 'username: ' . $username;
A vsebina panel.php bi se morala prikazati po uspešni prijavi?
bluefish ::
sem na koncu spet spisal kodo in sedaj deluje brez težav. Očitno se je šlo za kak typo ali kaj drugega.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
⊘ | Geekbuying nakupi in kuponi (strani: 1 2 3 )Oddelek: Kaj kupiti | 22487 (12972) | bluefish |
» | Simobil 50% popust na mesečno naročnino (strani: 1 2 3 )Oddelek: Mobilne tehnologije | 18396 (9205) | dk02 |
» | Prodaja GPL-ed kodeOddelek: Programiranje | 2115 (1789) | arjan_t |