| 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: 11 let
|
|||
0