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