Diskuze: Prihlásenie / registrácia
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zkus ten skript větvit podle stisknutého tlačítka
if($_POST['registrovat'])
{
//tady příkazy pro registraci
}
if($_POST['prihlasit'])
{
//tady příkazy pro přihlášení
}
Musíš mít nastavené jméno (name) i u tlačítek
Díky za tip, skúsim sa nad tým zamyslieť.
Nieje mi ešte jasné, aká stránka bude zpracovávať ten script. Chcem, aby sa po stlačení každého tlačítka načítavala iná stránka, s ktorou by sa ďalej pracovalo oddelene.
Alebo že by bol script na "zvláštnej" stránke a jeho výstupom by bolo načítanie dvoch iných stránok v závislosti na tom, ako by sa script vyhodnotil ?
Pokud to chceš odděleně, tak bude asi nejpřehlednější, když do toho kódu nahoře dáš jenom přesměrování na příslušnou stránku, nicméně šlo by i to aby byly příkazy pro vyhodnocení obou vstupů v jednom skriptu, například já jsem si udělal takovej jednoduchej content management system a ten je v jednom jediným souboru. Stejně bych ale nejradši viděl registraci a přihlášení ve dvou formulářích, protože pokud to budeš mít v jednom, budou se ti hrozně špatně ošetřovat vstupy (zobrazení chybových hlášek při nesprávném tvaru nebo nezadání údajů do formuláře). A to co jde, to bych dal do jednoho skriptu kvůli předávání proměnných mezi stránkami.
Vstupy mám momentálne ošetrené priamo vo formulári cez "required", takže nejde odoslať prázdné pole. Správny tvar e-mailovej adresy je ošetrený pomocou javascriptu. To by som už cez php nechcel ošetrovať.
Zatiaľ mám urobený tento kód na registráciu:
if($_POST['registrovat']) {
$connnection = mysql_connect("adresa", "nazov_databazy", "heslo");
if (!$connnection) {
die('Není možné se připojit k databázi: ' . mysql_error());
}
mysql_select_db("nazov_databazy", $connnection); // připojení k databázi
$sql = "INSERT INTO uzivatele (email, heslo)
VALUES
('$_POST[email]','$_POST[heslo]')"; // vložení nových údajů do databáze
if (!mysql_query($sql, $connnection)) {
die('Error: ' . mysql_error());
}
header('Location: stranka.html');
mysql_close($connnection);
}
Ešte je samozrejme potreba ošetriť kontrolu registračných údajov, aby sa niekto neregistroval dvakrát s tým istým e-mailom. Potom asi bude potreba doplniť aj nejaké zabezpečenie. To ale ešte musím naštudovať .
Pre prihlásenie bude ten script podobný, akurát nebude údaje do databázy ukladať, ale porovnávať s tými čo už tam sú, a ak tam žiadne údaje nebudú, tak vyhodí hlášku, že je potreba sa najprv zaregistrovať. Zase musím naštudovať .
Chcem sa ale opýtať, je to presmerovanie na ďalšiu stránku cez header('Location: stranka.html') správne ? Teda či sa to má robiť takto.
Netuším, proč ty formuláře potřebuješ zpracovávat odděleně. Všechny podstránky zpracovávám jedním index.php a podle mne je to nejspolehlivější řešení.
Také nechápu, proč používáš funkci die(). Ty chceš, aby ten skript chcípnul? To se přece zásadně nedělá.
Ja to nepotrebujem zpracovávať oddelene. Potrebujem ale, aby sa po stlačení každého tlačítka prešlo na inú stránku. Po stlačení "Registrovat" na stránku s výberom postavy a po stlačení tlačítka "Přihlásit" na nejakú stránku už priamo do hry (mapa, charakter, ...).
Je fakt, že možem ten script nahrať priamo do hlavnej stránky (index.php) a zpracovávať to tam. Zatiaľ to mám v samostatnom súbore "prihlaseni.php" a funguje to. Teda funguje to tak, že po zadaní údajov to uloží tieto údaje do databáze a prejde na cieľovú stránku.
Ten script som našiel na nejakej stránke, keď som hľadal tutoriály na registráciu a prihlásenie. Akurát som si upravil parametry podľa svojich potrieb. Zatiaľ sa php len učím a nerozumiem presne všetkým funkciám ktoré v php sú.
Takže som si pozrel funkciu die() v php manuáli, ale o moc múdrejší z toho niesom. Síce to moc nedoporučujú používať, ale neviem ako to inak ošetriť. Napadlo ma snáď len toto:
$connnection = mysql_connect("adresa", "nazov_databazy", "heslo");
if (!$connnection) {
echo('Není možné se připojit k databázi');
exit();
// alebo namiesto exitu použiť header()? Potom si ale niesom istý tým echom ...
header('Location: index.php');
}
Je v php niečo ako alert v Javascripte ?
To co jsi napsal, je jen obcházení die(), ale problém neřeší. Skript nesmí chcípnout, ale musí se korektně dokončit. To znamená uzavřít otevřené HTML značky, vypsat vhodnější náhradní text pro návštěvníka a zalogovat chybu.
Njn, akurát že momentálne to neviem inak urobiť (nemám na to znalosti) ...
Tak můžeš na to jít javascriptem nebo třeba přes odkaz (tzn.: index.php?text=abcd) Na stránce kde chceš text zobrazit si vytvoř nějaký skript na výpis. Stačí:
<?php
$text = $_GET['text'];
echo "Chyba: " . $text;
?>
Můžeš to taky dát jako funkci. Nebo to menusí být přes URL. Stačí text poslat přes $_POST a přesměrovat přes header. Tam jen to jen vypsat.
Díky za radu, zamyslím sa nad tým. Zatiaľ sa snažím nejako urobiť kontrolu údajov pri registrácii a prihlásenie. Fakt ale je, že všade kde som hľadal scripty na registráciu to riešia cez die() ...
Všude ne. Ti o trošku zdatnější používají výjimky. Ostatní to dělají podle zastaralých učebnic.
Zobrazeno 12 zpráv z 12.