Přihlašování a registrace uživatelů pomocí sessions

 |  PHP: Základy  |  31 281x
_

...snadno a jednoduše. Doufám, že tento můj článek nebude nošením dříví do lesa. K jeho napsání jsem se rozhodl po přečtení mnoha tutoriálů ohledně registrace a přihlašování uživatelů, které rozhodně nebyly z mého pohledu dostačující. Málokde je zmíněna funkce session_regenerate_id či možnost předávání SESSID pouze v cookies. Na první záblesky lepších časů jsem narazil až na php.vrana.cz (Mimochodem doporučuji přidat do RSS čtečky), a tak jsem se vlastně dostal k napsání tohoto svého návodu. A jelikož v jednoduchosti je síla, nebudeme například potřebovat žádná zbytečná volání funkcí htmlspecialchars či nesmyslného includování souborů až po odeslání formuláře, a s pomocí pár základních pravidel nakonec snadno vytvoříme přihlašovací systém a registraci uživatelů.

Prosím berte v potaz, že článek je z roku 2008. Hodně se za tu dobu hodně změnilo, a tak návod nemusí odpovídat dnešním standardům. Ukázka ale funguje a můžete ji využít jako první krok k lepšímu porozumnění PHP.

Ale dost řečí okolo, pojďme na to. Jako základ je samozřejmě potřeba vytvořit SQL tabulku pro uživatele.

SQL tabulka

CREATE TABLE `uzivatele` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `jmeno` varchar(255) NOT NULL COLLATE utf8_czech_ci,   
    `heslo` varchar(255) NOT NULL,
    `email` varchar(255) NOT NULL COLLATE utf8_czech_ci,
    `prava` int(10) unsigned NOT NULL DEFAULT '1', 
    `aktivni` int(10) unsigned NOT NULL DEFAULT '1',
    PRIMARY KEY  (`id`),
    UNIQUE (`jmeno`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=0 ;

O uživateli budeme ukládat přihlašovací jméno, heslo, registrační e-mail a jeho práva. Sloupec `aktivni`bude sloužit k pozdějšímu využití, pro implementaci možnosti schválení registrace administrátorem.

.htaccess

Ještě před napsáním prvních řádků skriptu se pustíme do nastavení základních direktiv .htaccessu pro práci se sessions. Zde zakážeme předávání SESSID v url, nastavíme ukládání pouze do cookies a nakonec jeho platnost. Stejného efektu lze docílit i funkcí ini_set, záleží jen na nastavení hostingu, co vám povolí. Nezapomeneme ani na další pojistku proti SQL injection a zapneme escapovaní uvozovek.

php_flag session.use_only_cookies 1
php_flag session.use_trans_sid 0
php_value session.cookie_lifetime 10800

php_flag magic_quotes_gpc on
php_flag magic_quotes_sybase off
php_flag magic_quotes_runtime off

První dva řádky mimo jiné zabrání i generování invalidního inputu do formulářů. Dále máme na pořadu dne konfigurační soubor. V něm nastavíme údaje pro připojení k databázi, připojíme se k ní a nastartujeme session.

Soubor config.php

<?php

error_reporting(E_ALL);

define('DBHOST', 'localhost');		// databazovy server
define('DBNAME', 'mysql');		// jmeno databaze
define('DBUSER', 'root');		// uzivatelske jmeno
define('DBPASS', '');			// heslo k databazi

mysql_connect(DBHOST, DBUSER, DBPASS) or die(mysql_error());
mysql_select_db(DBNAME) or die(mysql_error());

session_start();

?>

Nyní už si můžeme napsat registrační skript. Soubor register.php zpracuje data odeslaná z formuláře, zkontroluje a uloží do databáze. Jméno a heslo namísto projedeme navíc i regulárním výrazem, který žádné zlobivé znaky nepustí dál. Povolíme pouze alfanumerické znaky, pomlčku, podtržítko, tečku a e-mail (pokud je někdo zvyklý uvádět e-mail jako login). Kvůli potencionálním chybám v kódování zakážeme i diakritiku.

Registrace: soubor register.php

<?php

require_once('config.php');

if(isset($_POST['submit'])){
	$message = array();
	
	$_jmeno = trim(htmlspecialchars($_POST['jmeno']));
	$_email = trim(htmlspecialchars($_POST['email']));
	$_heslo = trim(htmlspecialchars($_POST['heslo']));
	
	// kontrola jmena na prazdnotu a regularnim vyrazem
	if(empty($_jmeno)){
		$message[] = 'Pole jméno je prázdné';
	}else{
		if(!preg_match("/^[_a-z0-9\.\-@]*$/", $_POST['jmeno'])){
			$message[] = 'Neplatné znaky v poli jméno.';
		}
	}
	
	// kontrola hesla na prazdnotu a regularnim vyrazem
	if(empty($_email)){
		$message[] = 'Pole e-mail je prázdné';
	}else{
		if(!preg_match('/^[_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}$/', $_POST['email'])){ 
			$message[] = 'Zadejte platný e-mail.';
		}
	}
	
	// kontrola hesla
	if(empty($_heslo)){
		$message[] = 'Pole heslo je prázdné';
	}else{
		if($_POST['heslo'] != $_POST['heslo2']) { 
			$message[] = 'Hesla se neshodují';
		}
	}
	
	// zkontrolujeme, zda-li v databazi uz nemame stejneho uzivatele
	$select = mysql_query("SELECT `jmeno` FROM `uzivatele` WHERE `jmeno`='".mysql_real_escape_string($_jmeno)."'");
	if(mysql_num_rows($select)>0) { 
		$message[] = 'Zvolte jiné uživatelské jméno.';
	} 
	
	// ulozime udaje, kdyz neni zadna chyba
	// prava i aktivni nastavime na 1
	if(empty($message)){
		$_heslo = md5($_POST['heslo']);
		$_jmeno = mysql_real_escape_string($_jmeno);
		$_email = mysql_real_escape_string($_heslo);
		
		mysql_query("INSERT INTO `uzivatele` VALUES('','{$_jmeno}','{$_heslo}','{$_email}',1,1)");
		header('Location: ./register.php?ok=1');
	}
}

?>

Dále už nám zbývá jen registrační formulář, HTML část souboru register.php. Nad něj vytiskneme případné chybové hlášky, uvedeme také informace o znacích, které jsou ve jménu povoleny.

<!DOCTYPE html> 
<html lang="cs"> 
<head>
	<meta charset="utf-8" />
	<title>Registrace uživatele</title>
</head>
<body>

<?php if(!empty($message)){?>
	<ul style="color:red;">
		<?php foreach((array)$message as $item){?>
		<li><?php echo $item;?></li>
		<?php }?>
	</ul>
<?php }?>

<?php if(isset($_GET['ok'])){ ?>
	<h2>Registrace proběhla úspěšně</h2>
<?php }else{ ?>
	<ul>
		<li>Jméno a heslo se smí skládat pouze z alfanumerických znaků, pomlčky, podtržítka, tečky a zavináče.</li> 
		<li>Nepoužívejte diakritiku.</li>
	</ul>
	<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
		<fieldset>
			<legend>Registrace uživatele</legend>
			<p><input name="jmeno" size="20" tabindex="1" type="text" value="<?php echo (!empty($_POST['jmeno']) ? htmlspecialchars($_POST['jmeno']) : ''); ?>" /> <label>Jméno *</label></p>
			<p><input name="email" size="20" tabindex="2" type="text" value="<?php echo (!empty($_POST['email']) ? htmlspecialchars($_POST['email']) : ''); ?>" /> <label>E-mail *</label></p>
			<p><input name="heslo" size="20" tabindex="3" type="password" /> <label>Heslo *</label></p>
			<p><input name="heslo2" size="20" tabindex="4" type="password" /> <label>Heslo znovu *</label></p>
			<input name="submit" type="submit" tabindex="5" value=" registrovat " /><br />
		</fieldset>
	</form>
<?php }?>

<p><a href="login.php">Přihlásit</a></p>
  
</body>
</html>

Nyní k přihlašovacímu skriptu a ověření uživatele. Pro ošetření dat z formuláře použijeme funkci mysql_real_escape_string (mysleme na SQL injection), provedeme SQL dotaz, při kladném výsledku nastavíme sessiony a přesměrujeme do administrace, při výsledku nulovém zašleme zobrazíme chybové hlášení. Pod parametrem v GETu zde také budeme provádět odhlášení.

Přihlášení: soubor login.php

<?php 

require_once('config.php');

if(isset($_POST['submit'])){
	$_jmeno = mysql_real_escape_string(trim($_POST['jmeno']));
	$_heslo = md5(trim($_POST['heslo']));
	
	$select = mysql_query("SELECT * FROM `uzivatele` WHERE `jmeno`='{$_jmeno}' AND `heslo`='{$_heslo}'") or die(mysql_error());
	$udaje  = mysql_fetch_assoc($select);
	
	// pokud je zadano platne jmeno a heslo
	if(mysql_num_rows($select)==1){
		session_regenerate_id(); // osetreni session stealing
		$_SESSION['jmeno'] = $_jmeno; // nastavime sessiony
		$_SESSION['heslo'] = $_heslo;
		$_SESSION['prava'] = $udaje['prava'];
		header("Location: admin.php");
	}else{
		$error_message = 'Chybné přihlašovací údaje';
	}
}
	
// odhlasime se
if(isset($_GET['logout'])){
	$_SESSION['jmeno'] = '';
	$_SESSION['heslo'] = '';
	$_SESSION['prava'] = '';
	unset($_SESSION['jmeno']);
	unset($_SESSION['heslo']);
	unset($_SESSION['prava']);
}

?>

Nakonec už jen vlastní formulář k loginu a můžeme se vesele přihlašovat.

?>
<!DOCTYPE html> 
<html lang="cs"> 
<head>
	<meta charset="utf-8" />
	<title>Přihlášení</title>
</head>
<body>

<?php if(isset($_GET['logout'])){ ?> 
	<p>Byli jste odhlášeni ze systému.</p>
<?php }?>

<?php if(!empty($error_message)){?>
	<ul style="color:red;">
		<li>Chybné přihlašovací údaje</li>
	</ul>
<?php }?>

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
	<fieldset>
		<legend>Přihlášení</legend>
		<p><input name="jmeno" size="20" tabindex="1" type="text" /> <label>Jméno</label></p>
		<p><input name="heslo" size="20" tabindex="2" type="password" /> <label>Heslo</label></p>
		<p><input name="submit" type="submit" tabindex="3" value=" přihlásit " /></p>
	</fieldset> 
</form>
  
<p><a href="register.php">Zaregistrovat</a></p>
  
</body>
</html>

Na závěr bych ještě krátce zmínil kontrolu uživatelů přímo v administraci. Jelikož jsme paranoidní, budeme při každém obnovení stránky tahat údaje z databáze a kontrolovat je s hodnotou SESSION proměnných. Funkci samozřejmě doporučuji includovat z externího souboru a v každém skriptu ji pouze volat. Ta se postará o kontrolu, zda-li je přihlášen skutečný uživatel, pokud ne, přesměruje na přihlašovací skript s hlavičkou 401. Potom je samozřejmě nutné myslet na to, že v případném formuláři na editaci profilu se musí přenastavit session, změní-li se heslo.

Před vlastním HTML výstupem by tedy měly být následující řádky. Samotné odhlášení bude pouze odkaz na login.php s parametrem.

Zaheslovaná sekce: soubor admin.php

<?php

require_once('config.php');

// pouze presmerovani
function unauth_header(){ 
    header('Location: login.php?code=401',401);
    exit;
}

// kontrola uzivatele
// na kazdy refresh probehne kontrola cloveka
function check_user(){
	if(isset($_SESSION['jmeno'],$_SESSION['heslo'],$_SESSION['prava'])){
		$select = mysql_query("SELECT `id` FROM `uzivatele` WHERE `jmeno`='{$_SESSION['jmeno']}' AND `heslo`='{$_SESSION['heslo']}'") or die(mysql_error());
		$udaje = mysql_fetch_assoc($select);
		if(mysql_num_rows($select) != 1){
			unauth_header();
		}
	}else{
		unauth_header();
	}
}

check_user();

?>

# Edit 19.3.2008:
Na připomínky čtenářů jsem přidal další direktivy do souboru .htaccess a také otrimování hesla při přihlašování.

# Edit 21. 1. 2016:
Skripty byly upraveny tak, aby nepoužívaly deprecated funkce. Systém kontroly registračního formuláře malinko upraven tak, aby lépe vracel chybové hlášky.

Všechny soubory si můžete stáhnout zde: prihlasovani.zip

Facebook Twitter Google+

Komentáře k článku "Přihlašování a registrace uživatelů pomocí sessions"
Zobrazuji pouze posledních 30 komentářů.

Gravatar
nesro 17. 8 2008, 17:42
9/38 Neděle 17. Srpna 2008, 17:42  |  Firefox, Linux

Ahoj, chtěl bych se zeptat, jak udělat "kdo je online"? Stačí mi jen teorie, kód si už zvládnu udělat (kdyby byl tak se zlobit nebudu). %5

Gravatar
Mike 18. 8 2008, 21:33
10/38 Pondělí 18. Srpna 2008, 21:33  |  Opera, Windows XP

[9] nesro: no záleží na tom, v jakém smyslu. pokud chceš pouze vidět kolik lidí máš zrovna na webu, tak bych to nijak neřešil a použil na to nějakou službu... proč to vymýšlet znovu když seš řekněmě za 5 minut registrovanej a za dalších 5 si na web hodíš link na nějaký externí javascript kterej to udělá za tebe.

pokud chceš počítat přihlášené uživatele, tak se to řeší přes databázi. po přihlášení zapíšeš že je online, čas, při neaktivitě po určité době zase vymažeš.

Gravatar
nesro 19. 8 2008, 07:30
11/38 Úterý 19. Srpna 2008, 07:30  |  Firefox, Linux

[10] Mike: Aaha, fakticky dik moc. %5

Gravatar
trancemaniac 10. 9 2008, 15:55
12/38 Středa 10. Září 2008, 15:55  |  Opera, Windows Vista

Zdravím, jak jsem koukal na kód, tak u jména a hesla jsou povolený jen malý písmena a-z, číslice 0-9, tečka ., pomlčka - a podtržítko _. A u emailu to samý, jen navíc velká písmena A-Z, nemýlím se? Tak jakto, že mi regulárním výrazem u jména a hesla prolezou velká písmena?

Gravatar
Mike 13. 9 2008, 00:00
13/38 Sobota 13. Září 2008, 00:00  |  Opera, Windows XP

[12] trancemaniac: odpověď se skrývá v jednom písmenku %0
ereg() vs. eregi() - funkce eregi je case insensitive.

Gravatar
Rici 13. 2 2009, 15:39
14/38 Pátek 13. Února 2009, 15:39  |  Firefox, Windows Vista

Ahoj v databaze je stlpec (abo jak to mam nazvat) "prava" ako nastavim aby sa na stranku dostal len uzvitatel co ma v pravach nastavene 2 pretoze nikde v kode som to nenasiel

Gravatar
Mike 13. 2 2009, 18:44
15/38 Pátek 13. Února 2009, 18:44  |  Opera, Windows XP

[14] Rici: Ahoj, nejlépe bude si navrhnout nějakou tabulku, která bude obsluhovat uživatele a jejich oprávnění...

možnost 1 : u uživatele (resp. uživatelských skupin) budeš mít uložena ID stránek, na které může / můžou. pak už je to jednoduché, pouze kontrola zda-li user na danou stránku může.

možnost 2 : každý uživatel bude mít svá práva v pohodbě dalšího sloupečku kde bude pevně dané číslo. pak si můžeš například u stránky uložit, jaká musí být minimální hodnota, aby tam daný uživatel mohl.

$user['rights'] = 5;
$page['rights'] = 2;

if ($user['rights'] < $page['rights']) {
// neautorizovan
}

možností je spousta, stačí si vybrat tu, která ti nejlépe zapadne %0

Gravatar
Rici 15. 2 2009, 16:39
16/38 Neděle 15. Února 2009, 16:39  |  Firefox, Windows Vista

Ano presne to som potreboval neviem preco ma to nenapadlo %4

si fakt macher raz chcem byt taky dobry ako si ty

Gravatar
Pavel 12. 8 2010, 19:10
17/38 Čtvrtek 12. Srpna 2010, 19:10  |  Chrome, Windows 7

zdravím, při přístupu z webu na index.php mi to napíše Access denied for user 'root'@'81.0.225.89' (using password: NO) nevíte v čem je problém?

Gravatar
Pavel 12. 8 2010, 19:19
18/38 Čtvrtek 12. Srpna 2010, 19:19  |  Chrome, Windows 7

Tak už nic, omlouvam se moje chyba(nepozornost)..:)

Gravatar
Jirka 26. 4 2011, 20:16
19/38 Úterý 26. Dubna 2011, 20:16  |  Chrome, Windows 7

Zdravím,

Mám takový malý dotaz, jsem mírně pokročilý uživatel, ale doteď jsem se zabýval tvorbou pouze v HTML, potřeboval bych poradit, jak udělat stránku tak, aby když tam vleze nepřihlášený uživatel, tak viděl všechno, kromě např. jedné věty, kterou uvidí pouze, pokud bude přihlášený?

aby to bylo lehčí na pochopení uvedu příklad:
stránka.html

reg. uživatel uvidí:

pes a kočka měli rande na Václaváku


nereg. uživatel:

pes a kočka měli rande

Gravatar
Mike 10. 5 2011, 09:18
20/38 Úterý 10. Května 2011, 09:18  |  Opera, Windows Vista

@: Ahoj, pokud budeme vycházet z výše uvedené ukázky, pak stačí jednoduchá podmínka

<? if (!empty($_SESSION['jmeno'])){ ?>
pes a kočka měli rande na Václaváku
<? } else { ?>
pes a kočka měli rande
<? } ?>

Gravatar
Lukáš 19. 5 2011, 15:22
21/38 Čtvrtek 19. Května 2011, 15:22  |  Firefox, Windows 7

@: Zdravím, nedaří se mi udělat přístup k administraci uživatelům. Přihlášený uživatel s právy 1 může vidět vše plus něco víc a přihlášený uživatel s právy 2 vidí ještě navíc odkaz administrace. Jak to udělat? Na stránce už se ověřuje zda je uživatel přihlášený, jak ověřit jeho práva a zobrazit odkaz "administrace"? Díky za odpověď.

Gravatar
Jirka 11. 7 2011, 21:55
22/38 Pondělí 11. Července 2011, 21:55  |  Chrome, Linux

Ahoj, koukal jsem, že hojně používáš funkci session_is_registered. Ačkoliv se už nedoporučuje (viz http://php.net/manual/en/function.session-is-registered.php) V době psaní článku tomu tak asi ještě nebylo. Nicméně zajímalo by mě, jak to řešit dnes, nebo zda je tato funkce nezbytná? Předem díky za odpověď :)

Gravatar
Mike 25. 7 2011, 14:35
23/38 Pondělí 25. Července 2011, 14:35  |  Opera, Windows Vista

@: Ahoj, přesně tak, v době psaní tohoto článku tam nic takového nebylo. Dnes už řeším vše úplně jinak. Proměnná $_SESSION je v celé aplikaci zmíněna na jednom jediném místě, všechno ostatní ji bere přes metody třídy.

Zjednodušená verze Session třídy :

class Session {

public static function regenerate() {
session_regenerate_id();
}

public static function start() {
session_start();
}

public static function _unset($key) {
$arg = func_get_args();

if (isset($arg[1])) {
unset($_SESSION[$arg[0]][$arg[1]]);
} else {
unset($_SESSION[$arg[0]]);
}
}

public static function set($key, $value, $value2 = null) {
if (isset($value2)) {
$_SESSION[$key][$value] = $value2;
} else {
$_SESSION[$key] = $value;
}
}

public static function get($key = null, $key2 = null) {
if (isset($key, $key2)) {
if (isset($_SESSION[$key][$key2])) {
return $_SESSION[$key][$key2];
} else {
return null;
}
} elseif (isset($key)) {
if (isset($_SESSION[$key])) {
return $_SESSION[$key];
} else {
return null;
}
} else {
return $_SESSION;
}
}
}



Pak jen nastavím hodnotu, získám hodnotu, smažu ji:

Session::set('user_logged', 1);
if ($is_logged = Session::get('user_logged')){
// is logged
}
// logout
Session::_unset('user_logged');

Gravatar
Jirka 31. 7 2011, 14:19
24/38 Neděle 31. Července 2011, 14:19  |  Opera, Windows 7

To vypadá docela složitě :D ..Bohužel se ještě moc neorientuji v třídách... nechystáš o tom napsat článek? :D;)

Gravatar
Jirka 15. 8 2011, 09:10
25/38 Pondělí 15. Srpna 2011, 09:10  |  Chrome, Windows 7

Btw, k čemu je u funkce SET proměnná $value2 a u funkce GET proměnná $key2?

Gravatar
Rey 15. 10 2011, 13:14
26/38 Sobota 15. Října 2011, 13:14  |  Chrome, Windows XP

Cau...jak zmenim heslo?

Gravatar
Kamil 22. 11 2011, 18:24
27/38 Úterý 22. Listopadu 2011, 18:24  |  Opera, Windows XP

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Gravatar
jarkad 5. 1 2012, 16:45
28/38 Čtvrtek 5. Ledna 2012, 16:45  |  MSIE, Windows 7

Mám takovej dotaz, jak udělat aby heslo a login platilo jen po určitou dobu ( třeba 3 měsíce), potom by bylo z databáze vymazáno.

Gravatar
Michal 19. 3 2012, 15:31
29/38 Pondělí 19. Března 2012, 15:31  |  Chrome, Windows 7

Funguje to dobre, ale nevite kde by mohla byt chyba, kdyz vlezu do login, automaticky to hlasi spatne jmeno a heslo, tudiz presmerovani probehne na 401. A pokud ji odmazu z linku, zahlasi ze prihlasovaci udaje jsou vadne a jde se prihlasit az na druhy pokus

Gravatar
Honza 13. 10 2014, 09:09
30/38 Pondělí 13. Října 2014, 09:09  |  Chrome, Windows 8

Zdravím, mám takový problém. PHP code který má být vložen do hlavičky login.php je nějaký porouchaný. Nezobrazí nic co je pod ním tak jsem ho zkoušel různě upravovat měnit funkce ale nic bohužel nezabralo. Kdyby mi někdo mohl pomoct moc bych byl vděčný. "" Ještě jsem nepochopil proč se config jmenuje "config.inc.php" když v souborech se směruje na "/config.php"

Gravatar
Mike 13. 10 2014, 09:24
31/38 Pondělí 13. Října 2014, 09:24  |  Opera, Windows 8.1

@: ahoj, zkoušel jsi části kódu z článku nebo přímo staženou ukázku? je možné, že v článku bude v kódu pár chyb, přecijen otestovat se to dá jako celek.

ohledně toho konfigu to zrovna jedna chyba je :-) v ukázce se správně všude volá "config.php" ale tady mám špatně nadpis.

ještě doporučuji zapnout chybová hlášení (ideální rovnou v htaccessu přes direktivu php_flag display_errors on), aby ti to při chybě neházelo bílou stránku ale chybové hlášení.

Gravatar
Honza 13. 10 2014, 19:44
32/38 Pondělí 13. Října 2014, 19:44  |  Chrome, Windows 8

Bohužel mám free doménu (endora.cz) a myslím si že tam pracovat s .htaccess není možné. "" Vytvořím si ".htaccess" a celá doména je rázem bez obsahu.

Gravatar
Mike 14. 10 2014, 10:25
33/38 Úterý 14. Října 2014, 10:25  |  Opera, Windows 8.1

no zobrazení chybových hlášení nějak rozchodit musíš, bez toho se programuje fakt špatně. jestli nefunguje htaccess, pak alternativa je funkce ini_set : ini_set("display_errors", "on"); - nevím z hlavy, však to vygooglíš. jestli ani tohle na hostingu nepůjde, už to bude potřeba pořešit s technickou podporou (že chceš zobrazovat php chybová hlášení).

každopádně než se tohle pořeší, doporučuji vše nejdřív zkoušel na localhostu, kde žádná nastavení zakázaná mít nebudeš a hnedka uvidíš, jestli tam chyba je (a kde) nebo není.

Gravatar
Paťan 12. 6 2015, 21:22
34/38 Pátek 12. Června 2015, 21:22  |  Chrome, Windows 7

Ahoj prosím tě vím že už je toto hrozně staré téma ale mám problém když mám administraci a používam require na vkládání další stránek do jedné. Ten tvůj kod vyvolá logicky fatal error. a nedokážu si s tím poradit jak vytvořit určitý klíč. Když poradíš budu velice rád. Děkuji

Gravatar
Paťan 13. 6 2015, 10:48
35/38 Sobota 13. Června 2015, 10:48  |  Chrome, Windows 7

Vyřešeno :-)

Gravatar
Mike 13. 6 2015, 13:01
36/38 Sobota 13. Června 2015, 13:01  |  Opera, Windows 8.1

to je dobře :-) no jinak vždycky je potřeba uvést přesné znění chyby, bez toho bych ti ani neporadil.

Gravatar
Dominik 3. 11 2015, 12:14
37/38 Úterý 3. Listopadu 2015, 12:14  |  Firefox, Windows 7

Zdravím. Chtěl bych se zeptat, jestli nemáš někde článek, jak se to dělá v dnešní době jelikož je to již dost starý článek, popřípadě zda nevíš o něčem, kde to je stejně podrobně vysvětleno, jako tady? Díky za odpověď. :-)

Gravatar
Mike 4. 11 2015, 11:11
38/38 Středa 4. Listopadu 2015, 11:11  |  Opera, Windows 8.1

ahoj, bohužel novější článek na toto téma nemám... programování se věnuji už jen velice okrajově, ani nechci psát o nečem, kde už nejsem tolik v obraze.

zkoušel jsem i něco vygooglit, ale když seznam / google neumí řadit výsledky i podle data, je to prostě na nic...

no když se nad tím zamyslím : zastaralé jsou zde hlavně sešny. ošetření se používá furt stejné. celkově by bylo samozřejmě lepší to pojmout objektově, ale tam už zaleží na tom, jak se ti chce či nechce dělat s objekty.

Celá diskuse

Přidat komentář







Nevím, kolik to je
Parak simati, Muballit mitte, Nergal allatu mellamu mesaru, La tapallah Annuaki, Kettu Puluthu qillatua