Nejste přihlášeni
právě si vytvářím svůj web a chci tam mít registraci
používám tenhle skript
<?php
$kontrola_odeslání = $_POST["tlacitko"];
if($kontrola_odeslání){
$nick = $_POST["nick"];
$heslo = $_POST["heslo"];
$potvrd_heslo = $_POST["Potvrd_heslo"];
$email = $_POST["email"];
if($heslo == $potvrd_heslo){
if($nick AND $email){
$heslo = md5(md5 ($heslo));
mysql_connect("https://sql9.endora.cz", "nick", "heslo");
mysql_select_db("registrace");
$ip = $_server["remote"];
$zapis = mysql_qwery("INSERT INTRO uzivatele SET nick='$nick', heslo='$heslo', email='$email', ip='$ip', opravneni='1',");
echo "úspěšně zaregistrováno.";
}
}
}
?>
v skriptu doufam že nemám chybu , chyba je spíš ve spojením z mysql protože se mi jméno nechce uložit do databáze
potřebuju poradit jak udělat aby se to aji zapsalo do databáze za každou radu předem dík
Upravil vydra (2013-07-30 16:55:52)
Offline
Máte vytvořené tabulky, do kterých se údaje zapisují? Změňte si https://sql9.endora.cz na "localhost".
Kontaktujte nás | FAQ
Email: fk@endora.cz
Offline
easyPHP použivam a zkusil jsem to předělat na local host ale dostanu se max do registrace kliknu na odeslat a nic
a tabulky jsem si už vytvořil
ale nevím jestli mam napsane dobře tohle: mysql_connect("https://sql9.endora.cz", "nick", "heslo");
tady pikladam i z tabulkama :
<?php
$kontrola_odeslání = $_POST["tlacitko"];
if($kontrola_odeslání){
$nick = $_POST["nick"];
$heslo = $_POST["heslo"];
$potvrd_heslo = $_POST["Potvrd_heslo"];
$email = $_POST["email"];
if($heslo == $potvrd_heslo){
if($nick AND $email){
$heslo = md5(md5 ($heslo));
mysql_connect("http://localhost/", "nick", "");
mysql_select_db("registrace");
$ip = $_server["remote"];
$zapis = mysql_qwery("INSERT INTRO uzivatele SET nick='$nick', heslo='$heslo', email='$email', ip='$ip', opravneni='1',");
echo "úspěšně zaregistrováno.";
}
}
}
?>
<p> Registrace </p>
<form action="<?php $PHP_SELF; ?>"mothode="POST">
<table>
<tr><td>Nick na serveru:</td><td><input type="text" name="nick" /></td></tr>
<tr><td>Heslo:</td><td><input type="heslo" name="heslo" /></td></tr>
<tr><td>Potvrď heslo:</td><td><input type="heslo" name="potvrď heslo" /></td></tr>
<tr><td>Email:</td><td><input type="Text" name="email" /></td></tr>
<tr><td></td><td><Input type="submit" name="tlacítko" valve="Registrovat se" /></td></tr>
</table>
</form>
</body>
</html>
Upravil vydra (2013-07-30 17:21:01)
Offline
zkoušel jsem local host jak přes easyphp tak i už na webu ale nikdy se mi to neuložilo do databáze a heslo a jméno mám správně
Offline
Nezadávejte jako server "http://localhost/", ale jen localhost.
Kontaktujte nás | FAQ
Email: fk@endora.cz
Offline
zkoušel jsem ale pořád nic
Offline
Máte tam tolik chyb, že se formulář nemůže odeslat.
Pročtěte si něco o formulářích - http://www.w3schools.com/html/html_forms.asp
a také jakých hodnot může nabývat TYPE v input - http://www.w3schools.com/tags/tag_input.asp
Trochu se pokusím vypsat pár chyb:
INSERT INTRO - neexitující SQL příkaz => INSERT INTO
FORM ... mothode - tato metoda neexistuje => FORM ... method
INPUT TYPE="heslo" - tento neexistuje => INPUT TYPE="PASSWORD"
....
Pomalu co řádek to chyba... Nepoužívejte zbytečně složité názvy proměnných a už vůbec ne s diakritikou (viz. "potvrď heslo", "tlacítko", ...)
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
za ta chyby se omlouvám ...teprve se to učím
myslím že teď jsem je už opravil (použivám tohle protože tohle jedine sem na internetu našel )
ale pořád se mi to nechce zapsat do databaze
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Registrace</title>
</head>
<body>
<?php
$kontrola_odeslani = $_POST["tlacitko"];
if($kontrola_odeslani){
$nick = $_POST["nick"];
$heslo = $_POST["heslo"];
$potvrd_heslo = $_POST["potvrd_heslo"];
$email = $_POST["email"];
if($heslo == $potvrd_heslo){
if($nick AND $email){
$heslo = md5(md5($heslo));
mysql_connect("localhost ", "nick", "heslo");
mysql_select_db("databaze");
$ip = $_SERVER["REMOTE_ADDR"];
$zapis = mysql_query("INSERT INTO uzivatele SET nick='$nick', heslo='$heslo', email='$email', ip='$ip', opravneni='1' ;");
echo "Registrace proběhla v pořádku.";
} else {
echo "Nezadal jsi nick nebo email.";
}
} else {
echo "Hesla nejsou shodná!";
}
}
?>
<p>
<form action="<?php $PHP_SELF; ?>" method="POST">
<table>
<tr><td>Nick: </td><td><input type="text" name="nick" /></td></tr>
<tr><td>Heslo: </td><td><input type="password" name="heslo" /></td></tr>
<tr><td>Potvrď Heslo: </td><td><input type="password" name="potvrd_heslo" /></td></tr>
<tr><td>E-mail: </td><td><input type="text" name="email" /></td></tr>
<tr><td><input type="submit" name="tlacitko" value="Registrovat" /></td></tr>
</table>
</form>
</p>
</body>
</html>
Offline
Vynechte středník v řádku zápisu do databáze
$zapis = mysql_query("INSERT INTO uzivatele SET nick='$nick', heslo='$heslo', email='$email', ip='$ip', opravneni='1'");
Doporučuji i nastavit kódovou stránku pro připojení k databázi:
mysql_query("SET CHARACTER SET utf8");
Připojení nemáte ošetřeno na chybu - die();
Vstupní proměnné nejsou ošetřeny proti SQL injection - lze tak snadno získat Vaše data hackerem. Najděte si informace o SQL injection.
Upravil kksmirice (2013-07-30 23:43:57)
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
Moc dík za radu
fakt díky
už se to do databáze zapsalo
opravdu moc díky
Offline
Ošetřený kód na vstupu např.:
<?php
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Registrace</title>
</head>
<body>';
$kontrola_odeslani = $_POST["tlacitko"];
if($kontrola_odeslani) {
$link = PripojDB();
$nick = mysql_real_escape_string($_POST["nick"]);
$heslo = mysql_real_escape_string($_POST["heslo"]);
$potvrd_heslo = mysql_real_escape_string($_POST["potvrd_heslo"]);
$email = mysql_real_escape_string($_POST["email"]);
if($heslo == $potvrd_heslo) {
if($nick AND $email) {
$heslo = md5($heslo);
$ip = $_SERVER["REMOTE_ADDR"];
$dotaz = "INSERT INTO uzivatele SET nick='". $nick ."', heslo='". $heslo ."', email='". $email ."', ip='". $ip ."', opravneni='1'";
@$vysledek = mysql_query($dotaz, $link);
if (!$vysledek) {
echo "Záznam se nepodařilo uložit";
} else {
echo "Registrace proběhla v pořádku.";
}
} else {
echo "Nezadal jsi nick nebo email.";
}
} else {
echo "Hesla nejsou shodná!";
}
}
echo '
<p>
<form method="POST">
<table>
<tr><td>Nick: </td><td><input type="text" name="nick" /></td></tr>
<tr><td>Heslo: </td><td><input type="password" name="heslo" /></td></tr>
<tr><td>Potvrď Heslo: </td><td><input type="password" name="potvrd_heslo" /></td></tr>
<tr><td>E-mail: </td><td><input type="text" name="email" /></td></tr>
<tr><td><input type="submit" name="tlacitko" value="Registrovat" /></td></tr>
</table>
</form>
</p>
</body>
</html>';
Function PripojDB()
{
$db_host = "localhost";
$db_user = "user";
$db_pass = "heslo";
$db_name = "databaze";
$link = mysql_connect($db_host, $db_user, $db_pass);
if (!$link)
die ("Nelze se pripojit k MySQL serveru: ".mysql_error());
mysql_select_db($db_name, $link);
mysql_query("SET CHARACTER SET utf8");
return $link;
}
Snad jsem v rychlosti neudělal chybu...
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
píše mi to : Nelze se pripojit k MySQL serveru: Access denied for user 'nick'@'8*.8*.1**.2**' (using password: YES)
Offline
Jak máte zapsané údaje? Host atp.? Chyba bude ve špatném přihlašovacím heslu k databázi, případně v jiném údaji. Zkontrolujte si je, zda máte vše správně.
Kontaktujte nás | FAQ
Email: fk@endora.cz
Offline
dík zatím to funguje ... tak doufam že tam ja zas neco nezdrbu
Offline
ještě bych měl 1 otázku registrace funguje ale ted mam zase problém z přihlášením hledal jsem na netu spoustu navodu ale nikde jsem žadnej dobrej nenašel krom tohodle ..
<body>
<?php
$tlacitko = $_POST["tlacitko"];
if($tlacitko){
$nick = $_POST["nick"];
$heslo = $_POST["heslo"];
$heslo = md5(md5($heslo));
mysql_connect("localhost", "nick", "heslo");
mysql_select_db("registrace");
mysql_query("SET CHARACTER SET utf8");
$zapis = mysql_query("INSERT INTO uzivatele SET nick='$nick', heslo='$heslo', email='$email', ip='$ip', opravneni='1'");
while($vystup = mysql_fetch_object($dotaz))
{
$id = $vystup->id;
$nickDB = $vystup->nick;
$hesloDB = $vystup->heslo;
$email = $vystup->email;
$opravneni = $vystup->opravneni;
}
if($nick == $nickDB AND $heslo == $hesloDB){
$_SESSION["id"] = $id;
$_SESSION["nick"] = $nick;
$_SESSION["email"] = $email;
$_SESSION["opravneni"] = $opravneni;
echo "Byl jsi přihlášen jako $nick";
}
}
?>
<p>
<form action="<?php $PHP_SELF; ?>" method="POST">
<table>
<tr><td>Nick:</td><td><input type="text" name="nick" /></td></tr>
<tr><td>Heslo:</td><td><input type="password" name="heslo" /></td></tr>
<tr><td></td><td><input type="submit" name="tlacitko" value="Přihlásit se" /></td></tr>
</table>
</form>
</p>
</body>
</html>
když dám přihlásit se tak se vlastně nic nestane
Offline
Jediné co se stane je zápis nového uživatele do databáze
$zapis = mysql_query("INSERT INTO uzivatele SET nick='$nick', heslo='$heslo', email='$email', ip='$ip', opravneni='1'");
Bohužel mi to celé připadá vytržené z kontextu a mohu se jen domnívat, co by volané funkce měly dělat... Pravděpodobně SELECT * FROM uzivatele ...
while($vystup = mysql_fetch_object($dotaz))
{
$id = $vystup->id;
$nickDB = $vystup->nick;
$hesloDB = $vystup->heslo;
$email = $vystup->email;
$opravneni = $vystup->opravneni;
}
Není nikde definováno co má $dotaz provést...
Můžete se inspirovat podobným způsobem na těchto stránkách. Některé funkce a nastavení je nutno upravit, ale podstata zůstává.
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
trochu sem to z tím zápisem zpletl mělo to bejt takhle $select = mysql_query("INSERT INTO uzivatele SET nick='$nick', heslo='$heslo', email='$email', ip='$ip', opravneni='1'"); ted myslim ze je to dobře ale pořad my to nejede a nechce se nic ukazat
Offline
Podstatou celého je uvědomit si co má script dělat a popsat si to na papír.
1. Zadej údaje do formuláře (nick a heslo);
2. Zjisti, zda je přihlašovaný registrován;
3. Pokud je registrován, pak jej přihlaš => vytvoř platnou session.
Na odkazovaných stránkách si můžete stáhnout všechny soubory v ukázce již hotové.
K Vašemu souboru:
ADD 1) Tato část vykreslí přihlašovací formulář.
<p>
<form method="POST">
<table>
<tr><td>Nick:</td><td><input type="text" name="nick" /></td></tr>
<tr><td>Heslo:</td><td><input type="password" name="heslo" /></td></tr>
<tr><td></td><td><input type="submit" name="tlacitko" value="Přihlásit se" /></td></tr>
</table>
</form>
</p>
ADD 2) Zde se testuje, zda je uživatel registrovaný:
$tlacitko = $_POST["tlacitko"];
if($tlacitko) {
$nick = $_POST["nick"];
$heslo = $_POST["heslo"];
$heslo = md5(md5($heslo)); // pozor na 2x md5 (pro bezne pouziti postacuje pouze md5 a je podstatne jak je ulozeno heslo v databazi 1x nebo 2x md5)
mysql_connect("$db_host", "$db_user", "$db_pass"); // prihlasovaci udaje pro pripojeni k databazi
mysql_select_db("registrace"); // nazev databaze
mysql_query("SET CHARACTER SET utf8");
$dotaz = mysql_query("SELECT * FROM uzivatele WHERE nick='$nick', heslo='$heslo'");
if ($pocet = mysql_num_rows($dotaz) != 0) {
ADD 3) Toto zabezpečí vytvoření dané session pro uživatele:
$_SESSION["id"] = $id;
$_SESSION["nick"] = $nick;
$_SESSION["email"] = $email;
$_SESSION["opravneni"] = $opravneni;
echo "Byl jsi přihlášen jako $nick";
}
}
Je nutné ošetřit vstupní proměnné na možný hack, alespoň locin (nick) např.: addslashes(), nebo mysql_real_esccape_string().
Pokud se objeví hláška Byl jsi přihlášen jako ... , pak lze uživatele přesměrovat na požadovanou stránku, např.: Header("Location: index.php");
Osobně mám použit obdobný přihlašovací postup na svých stránkách, kde plně funguje.
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
ok dík
Offline