Autor | Zpráva | ||
---|---|---|---|
fifa Profil |
#1 · Zasláno: 20. 1. 2015, 18:00:02
Dobrý den mám vytvořený přihlašovací script propojený s mysql databází n amém server a chtěl bych se zeptat jak udělat php kod aby četl data z databáze zde přikládám php kody celého systému
config.php <?php define('SQL_HOST', 'localhost'); // obvykle localhost define('SQL_UZIVATEL', 'uživatel'); // přihlašovací jméno do mysql define('SQL_HESLO', 'heslo'); // heslo do mysql define('SQL_DATABAZE', 'databáze'); // databáze mysql define('WEB_START', 'jsemPrihlasen.php'); // startovní stránka po přihlášení ?> registrace.php <?php session_start(); //Pokud uživatel nějaké políčko nevyplnil, sdělíme mu to if( isset($_SESSION['ERROR_ZPRAVA']) && is_array($_SESSION['ERROR_ZPRAVA']) && count($_SESSION['ERROR_ZPRAVA']) >0 ) { echo '<ul type="I">'; foreach($_SESSION['ERROR_ZPRAVA'] as $zpr) { echo '<li>',$zpr,'</li>'; } echo '</ul>'; unset($_SESSION['ERROR_ZPRAVA']); } ?> <form action="zregistrace.php" 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>Heslo znovu: </td><td><input type="password" name="zheslo"></td> </tr> <tr> <td> </td><td align="right"><input type="submit" name="Submit" value="Registrovat"></td> </tr> </table> </form> zregistrace.php <?php //Nastartování session session_start(); //Vložení config.php require_once('config.php'); $error_zprava = array(); //Validace pro errory $error = false; //Připojení k mysql serveru $link = mysql_connect(SQL_HOST, SQL_UZIVATEL, SQL_HESLO); if(!$link) { die('Nelze se připojit: ' . mysql_error()); } //Zvolíme databázi $db = mysql_select_db(SQL_DATABAZE); if(!$db) { die("Databáze nenalezena"); } //Zabráníme sql injekci function clean($str) { $str = @trim($str); if(get_magic_quotes_gpc()) { $str = stripslashes($str); } return mysql_real_escape_string($str); } //Vyčistíme přijaté hodnoty $nick = htmlspecialchars(clean($_POST['nick'])); $heslo = htmlspecialchars(clean($_POST['heslo'])); $zheslo = clean($_POST['zheslo']); $ip = $_SERVER["REMOTE_ADDR"]; //Kontrolujeme, zda uživatel vyplnil všechna pole //Kontrola nicku if($nick == '') { $error_zprava[] = 'Vyplň nick!'; $error = true; } //Kontrola hesla if($heslo == '') { $error_zprava[] = 'Vyplň heslo!'; $error = true; } //Kontrola zopakovaného hesla if($zheslo == '') { $error_zprava[] = 'Vyplň kontrolu hesla!'; $error = true; } //Porovnání zadatných hesel if( strcmp($heslo, $zheslo) != 0 ) { $error_zprava[] = 'Hesla nesouhlasí!'; $error = true; } //Zkontrolujeme, zda již někdo pod tímto nickem není zaregistrován if($nick != '') { $dotaz = "SELECT * FROM uzivatele WHERE nick='$nick'"; $pdotaz = mysql_query($dotaz); if($pdotaz) { if(mysql_num_rows($pdotaz) > 0) { $error_zprava[] = 'Nick je již zabrán!'; $error = true; } @mysql_free_result($pdotaz); } else { die("Selhání dotazu č1"); } } //Pokud je chyba v políčkách, vrátíme uživatele zpět a sdělíme co neměl vyplněno if($error) { $_SESSION['ERROR_ZPRAVA'] = $error_zprava; session_write_close(); header("location: registrace.php"); exit(); } //Vytvoříme sql dotaz $dotaz = "INSERT INTO uzivatele(nick, heslo, ip) VALUES('$nick','".md5($_POST['heslo'])."','$ip')"; mysql_query("SET character_set_client=utf8"); mysql_query("SET character_set_connection=utf8"); mysql_query("SET character_set_results=utf8"); //Provedeme sql dotaz $pdotaz = @mysql_query($dotaz); //Při úspěšné registraci hodíme uživatele na prihlaseni.php?z=registrace-uspesna if($pdotaz) { header("location: prihlaseni.php?z=registrace-uspesna"); exit(); }else { die("Selhání dotazu č2"); } ?> prihlaseni.php <?php //Pokud uživatel nějaké políčko nevyplnil, sdělíme mu to if( isset($_SESSION['ERROR_ZPRAVA']) && is_array($_SESSION['ERROR_ZPRAVA']) && count($_SESSION['ERROR_ZPRAVA']) >0 ) { echo '<ul type="I">'; foreach($_SESSION['ERROR_ZPRAVA'] as $zpr) { echo '<li>',$zpr,'</li>'; } echo '</ul>'; unset($_SESSION['ERROR_ZPRAVA']); } //Registrace úspěšná a ostatní $zpr = array('registrace-uspesna' => 'Byl/a jsi úspěšně zaregisrován/a. Nyní se můžeš pihlásit.', 'prihlaseni-selhalo' => 'Přihlášení selhalo. Prosím, zkontroluj zadané údaje.', 'automaticke-odhlaseni' => 'Byl/a jsi neaktivní déle jak 30 minut. Byl/a jsi automaticky odhlášen/a.',); //Jestliže jseme dostali "z" tak řekneme obsah arraye if($_GET['z']){ echo "".$zpr[$_GET['z']].""; }else{ echo ""; } ?> <form action="zprihlaseni.php" 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 align="right"><input type="submit" name="Submit" value="Přihlásit se"></td> </tr> </table> </form> zprihlaseni.php <?php //Nastartování session session_start(); //Vložení config.php require_once('config.php'); $error_zprava = array(); //Validace pro errory $error = false; //Připojení k mysql serveru $link = mysql_connect(SQL_HOST, SQL_UZIVATEL, SQL_HESLO); if(!$link) { die('Nelze se připojit: ' . mysql_error()); } //Zvolíme databázi $db = mysql_select_db(SQL_DATABAZE); if(!$db) { die("Databáze nenalezena"); } //Zabráníme sql injekci function clean($str) { $str = @trim($str); if(get_magic_quotes_gpc()) { $str = stripslashes($str); } return mysql_real_escape_string($str); } //Vyčistíme přijaté hodnoty $nick = clean($_POST['nick']); $heslo = clean($_POST['heslo']); //Kontrolujeme, zda uživatel vyplnil všechna pole //Kontrola nicku if($nick == '') { $error_zprava[] = 'Vlož nick!'; $error = true; } //Kontrola hesla if($heslo == '') { $error_zprava[] = 'Vlož heslo!'; $error = true; } //Pokud je chyba v políčkách, vrátíme uživatele zpět a sdělíme co neměl vyplněno if($error) { $_SESSION['ERROR_ZPRAVA'] = $error_zprava; session_write_close(); header("location: prihlaseni.php?z=prihlaseni-selhalo"); exit(); } //Vytvoříme sql dotaz $dotaz="SELECT * FROM uzivatele WHERE nick='$nick' AND heslo='".md5($_POST['heslo'])."'"; mysql_query("SET character_set_client=utf8"); mysql_query("SET character_set_connection=utf8"); mysql_query("SET character_set_results=utf8"); //Provedeme sql dotaz $pdotaz=mysql_query($dotaz); //Pokud dosud bylo vše úspěšné, zapíšeme údaje do session if($pdotaz) { if(mysql_num_rows($pdotaz) == 1) { session_regenerate_id(); $uzivatel = mysql_fetch_assoc($pdotaz); //Zapisování údajů do session $_SESSION['ID'] = $uzivatel['id']; $_SESSION['NICK'] = $uzivatel['nick']; $_SESSION['HESLO'] = $uzivatel['heslo']; session_write_close(); header("location: ".WEB_START.""); exit(); }else { //Vše bylo neůspěšné. Přihlášení se nezdařilo header("location: prihlaseni.php?z=prihlaseni-selhalo"); exit(); } }else { die("Selhání dotazu"); } ?> autentizace.php <?php //Nastartování session session_start(); //Jestliže není zadaný v session id hodí vás to na prihlaseni.php if(!isset($_SESSION['ID']) || (trim($_SESSION['ID']) == '')) { header("location: prihlaseni.php?z=automaticke-odhlaseni"); exit(); } ?> jsemPrihlasen.php <?require_once('autentizace.php'); //Velice důležité (kdyby to tu nebylo, mohl by sem nepřihlášený uživatel)?> <h1>Stránka, kam se dostanou jen přihlášení uživatelé</h1> <p>Vítej <b><?echo $_SESSION['NICK']?></b></p> A tady dále pokračuje stránka.... <a href="odhlasit.php">Odhlásit</a> |
||
lionel messi Profil |
#2 · Zasláno: 20. 1. 2015, 18:32:27
fifa:
„chtěl bych se zeptat jak udělat php kod aby četl data z databáze“ Čo konkrétne? Napíš sem názvy predmetných tabuliek, uveď štruktúru (čiže hlavne názvy stĺpcov, dátové typy nemusia byť) a špecifikuj, čo potrebuješ vytiahnuť, uvedené kódy nie sú v tomto prípade celkom relevantné, týkajú sa výlučne zápisu do db, nie výpisu z nej. Všeobecný postup, možno ti trochu pomôže: 1. Musíš sa samozrejme pripojiť k databáze. 2. Zostavíš SQL dotaz, v tomto prípade klasický SELECT (česky + česky o zoraďovaní a limite). 3. Dotaz normálne prevedieš pomocou $result = mysql_query($query); (v prípade použitia užívateľského vstupu nezabudni na escapovanie).
4. Na vypísanie dát si vytvoríš cyklus (ak vypisuješ jeden riadok, nebudeš ho potrebovať) asi takto: while ($row = mysql_fetch_assoc($result)) { //tu bude vypisovanie dát } $row pod textovými indexmi zodpovedajúcimi názvu príslušného databázového stĺpca (prípadne jeho aliasu, ak ho použiješ v dotaze).
|
||
Časová prodleva: 10 let
|
0