Elkészítettem a regisztráció és a bejelentkező részét, most már tökéletesítve, csak még mindig az adatbázissal van bajom. Mi lehet a baj?
$result = mysql_query (INSERT INTO regisztracio SET nev='$nev', jelszo='$jelszo', email='$email') ; ez miért nem jó? Ezzel kiegészítve a kódsort törli a 3 létrehozott mezőt és kettő névtelent hoz létre.
regisztracio.php
<?php
include ("config/config.php");
?>
<html>
<table border ="2">
<td>
<form action = "regisztracio.php" method = "POST">
Felhasználónév: <font color = "red">*</font><input type = "text" name = "felhasznalo">
<br>
Jelszó: <font color = "red">*</font><input type = "password" name = "jelszo">
<br>
Jelszó megerősítése: <font color = "red">*</font><input type = "password" name = "jelszo2">
<br>
Email: <font color = "red">*</font><input type = "text" name = "email">
<br>
<br>
<input type = "submit" name = "regisztralas" value = "Regisztráció">
</form>
<?php
$felhasznalo = mysql_real_escape_string($_POST['felhasznalo']);
$jelszo = mysql_real_escape_string($_POST['jelszo']);
$jelszo2 = mysql_real_escape_string($_POST['jelszo2']);
$email = mysql_real_escape_string($_POST['email']);
if ($felhasznalo == "")
{
echo "<b><center>Nem töltötted ki a felhasználónév mezőt!</b></center>";
die;
}
if ($jelszo == "")
{
echo "<b><center>Nem töltötted ki a jelszó mezőt!</b></center>";
die;
}
if ($jelszo2 == "")
{
echo "<b><center>Nem töltötted ki a jelszó megerősítése mezőt!</b></center>";
die;
}
if ($email == "")
{
echo "<b><center>Nem töltötted ki a email mezőt!</b></center>";
die;
}
if ( $jelszo == "$jelszo" )
{
echo "<b><center>A két jelszó nem egyezik!</b></center>";
}
?>
</td>
</table>
</html>
belep.php
<?php
include ("config/config.php");
?>
<html>
<table border = "2">
<td>
<form action = "belep.php" method = "POST">
Felhasználónév: <input type = "text" name = "felhasznalo">
<br>
Jelszó: <input type = "password" name = "jelszo">
<br>
<br>
<input type = "submit" name = "belepes" value = "Belépés">
</form>
<?php
$felhasznalo = mysql_real_escape_string($_POST['felhasznalo']);
$jelszo = mysql_real_escape_string($_POST['jelszo']);
if ($felhasznalo == "")
{
echo "<b><center>Nem töltötted ki a felhasználónév mezőt!</b></center>";
die;
}
if ($jelszo == "")
{
echo "<b><center>Nem töltötted ki a jelszó mezőt!</b></center>";
die;
}
?>
</td>
</table>
</html>
Nem biztos, hogy az a baj, de innen lemaradt az idézőjel:
$result = mysql_query ("INSERT INTO regisztracio SET nev='$nev', jelszo='$jelszo', email='$email'") ;
Ezt nem egészen értem: "Ezzel kiegészítve a kódsort törli a 3 létrehozott mezőt és kettő névtelent hoz létre."
Van regisztracio táblád, és azon belül nev, jelszo, email meződ? Ha valami hiba van, akkor annak a megállapításának egyik módja:
mysql_query ("INSERT INTO regisztracio SET nev='$nev', jelszo='$jelszo', email='$email'") or die(mysql_error()); Ezt tedd oda, hátha kapsz hibaüzenetet.
Ezzel a beszúrt kóddal: mysql_query ("INSERT INTO regisztracio SET nev='$nev', jelszo='$jelszo', email='$email'") or die(mysql_error());
Ezt írja a táblán belül alul: Unknown column 'nev' in 'field list'
"Ezt írja a táblán belül alul: Unknown column 'nev' in 'field list'"
Akkor így nyilvánvaló, nincs nev meződ (nem lehet, hogy felhasznalo-nak nevezted el?), illetve neked nincs $nev változód, csak $felhasznalo, írd át.
És mégegy apróság, a form-ot és a php feldolgózót vagy külön fájlba kéne tenned, vagy pedig egy if-el elválasztani a kettőt (akkor is kiírja a hibaüzenetet, mielőtt még bármit beírnál, tehát a php is lefut, amíg nem kéne)
Á most már jó :)
Csak most már annyi a baj, ha nem egyezik meg a 2 jelszó akkor is beküldi az adatbázisba :)
A felhasználó nevet azért nem mentette el meg az emailt, mert betűre volt állítva az érték adója most text-en van :) de viszont akkor a jelszót mire állítsam? Mert gondolom betűt nem fog tárolni jelen esetben csak számot :)
1. Már látom mi a gond, egyrészt, amit mondtam, neked nincs nev oszlopod, csak felhasznalo
$result = mysql_query ("INSERT INTO regisztracio SET felhasznalo='$felhasznalo', jelszo='$jelszo', email='$email'") ;
2. A felhasználónevet, email-t és jelszót nem egész számként kéne tárolni (az int az az egész szám), ezért tudta csak a jelszót tárolni, ahol szám volt megadva (ha az email-nél, és felhasználónévnél is számot adnál meg, azt is letárolná). A típusnál char-t, text-et vagy varchar-t adj meg (ha jól emlékszek, ezek a szöveges adat tárolására alkalmasak). (ha a jelszót md5-ben akarod eltárolni, akkor 32 hosszúságú kéne)
3. Mint ár mondtam, a form-ot és a php feldolgozó el kell választanod, vagy úgy, hogy külön fájlba teszed, vagy pedig egy if-el elválasztod a kettőt (tehát a form rész akkor fusson le, ha még nem nyomtak a submit gombra, különben a php feldolgozó fusson le), ezért írja be kétszer.
Nah most már tökéletes :)
A másik része pedig a reg1-ben maradt :)
Meg hogyan lehetne azt, hogy ha minden tökéletes akkor kiírja azt, hogy sikeres regisztráció?
És hogyan lehetne ezt az adatbázist login részként alkalmazni?
Meg a kiíratása tudom, hogy ez tagnap volt de mivel nem működött helyesen az adatbázis nem tudtam vele foglalkozni :)
regisztracio2.php
<?php
include ("config/config.php");
$felhasznalo = mysql_real_escape_string($_POST['felhasznalo']);
$jelszo = mysql_real_escape_string($_POST['jelszo']);
$jelszo2 = mysql_real_escape_string($_POST['jelszo2']);
$email = mysql_real_escape_string($_POST['email']);
mysql_query ("INSERT INTO regisztracio SET felhasznalo='$felhasznalo', jelszo='$jelszo', email='$email'") or die(mysql_error());
if ($felhasznalo == "")
{
echo "<b><center>Nem töltötted ki a felhasználónév mezőt!</b></center>";
die;
}
if ($jelszo == "")
{
echo "<b><center>Nem töltötted ki a jelszó mezőt!</b></center>";
die;
}
if ($jelszo2 == "")
{
echo "<b><center>Nem töltötted ki a jelszó megerősítése mezőt!</b></center>";
die;
}
if ($email == "")
{
echo "<b><center>Nem töltötted ki a email mezőt!</b></center>";
die;
}
if ( $jelszo == $jelszo2 )
{
echo "";
}
else
{
echo "<b><center>A két jelszó nem egyezik!</b></center>";
}
?>
Jaj :S
Olyan baj is felmerült, hogy ha valaki a regisztracio2.php részt csak frissítené akkor nem csak kiírná azt, hogy nem töltötte ki a felhasználó mezőt ez nem baj, mert ez a dolga de az már baj, hogy ha frissítik akkor üres mezőket hoz létre S.O.S
Örülök, hogy már jó.
A sikeres regisztrációt én úgy iratnám ki, hogy mikor már kettéválasztottad egy if-el a form és a php feldolgozó részt, csak egy példa, így:
<?php if(isset($_POST['button']){>
<form ...>
<input type="submit" value="elküld" name="button">
</form>
<?php }else{
//php feldolgozó
>
Így ha a felhasználó nem nyomott rá a submit-ra, akkor csak a form rész hajtódik végre, egyébként pedig a php feldolgozó.
A bejelentkezés-t és a kiíratást már leírtam tegnap (itt a link):
http://www.gyakorikerdesek.hu/szamitastechnika__weblapkeszit..
(esetleg a változóneveket, lekérdezéseket kell kicserélni benne).
Arra, hogy miért írja be üresen is az adatokat, elég egyszerű a válasz, először beíratod az adatokat a táblába, és csak utána ellenőrzöd, hogy nem e üresek (bár kiírod, hogy üres volt, ennek ellenére már bent van a táblába) a megadott adatok (a logika is azt diktálná, hogy először ellenőrizd, aztán, ha minden jó írasd bele), tehát a mysql_query ("INSERT INTO regisztracio SET felhasznalo='$felhasznalo', jelszo='$jelszo', email='$email'") or die(mysql_error()); -t a legutolsó if után tedd be ( ez alá: {
echo "<b><center>A két jelszó nem egyezik!</b></center>";
} -> //ide).
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!