Tyle rzeczy sie nauczyc w chwile (IMG:
style_emoticons/default/tongue.gif) , dzięki.
Na szczescie rzadko uzywam do-while.
Najczesciej while/foreach.
Z petlami mialem najwiekszy problem gdy zaczynalem nauke "dawno" temu (IMG:
style_emoticons/default/tongue.gif)
Co do bardziej przemyslanego:
<?php
define('IS_DEBUG', true); // DEBUG MODE. define('ok', true); // for included files. define('RP', $_SERVER['DOCUMENT_ROOT']); // root path.
if (IS_DEBUG)
{
ini_set('display_startup_errors',true); }
else ini_set('display_errors',false);
session_save_path(__DIR__
.'/sess/'); # change dir of sess; defend for shared hosting.
# functions include #
include RP.'/php/functions.php';
register_shutdown_function('footer');
if (!isset($_GET['p'])) $_GET['p']='home'; switch ($_GET['p'])
{
case 'signin': $page=['title'=>'Logowanie','name'=>'signin']; break;
case 'signup': $page=['title'=>'Rejestracja','name'=>'signup']; break;
case 'addpost': $page=['title'=>'Dodaj post','name'=>'addpost']; break;
case 'addcategory': $page=['title'=>'Dodaj kategorię','name'=>'addcategory']; break;
case 'signout': $_SESSION=[]; session_destroy(); $page=['title'=>'Cytaty online','name'=>'home']; break; default: $page=['title'=>'Blog - KsaR','name'=>'home'];
}
$server=sprintf('//%s/~%s/',$_SERVER['SERVER_ADDR'],explode('/',$_SERVER['SCRIPT_FILENAME'])[2
]);
echo '<!DOCTYPE html SYSTEM "about:legacy-compat"> <html lang="pl" dir="ltr">
<head>
<meta charset="UTF-8"/>
<title>',$page['title'],'.</title>
<meta name="viewport" content="width=device-width,maximum-scale=2.5,initial-scale=1.0"/>
<link rel="stylesheet" href="',$server,'css/style.min.css?v=0"/>
<meta name="MobileOptimized" content="true"/>
<meta name="HandheldFriendly" content="true"/>
<meta name="author" content="KsaR"/>
<meta name="keywords" content="ksar,blog,php,polski"/>
</head>
<body>
<header>';
// @author: KsaR.
## session security ##
// before stolen session
if (isset($_SESSION['owner']) && $_SESSION['owner']!==$_SERVER['HTTP_USER_AGENT']) {
exit('<div style="color:red"><b>Wykryto i udaremniono próbę przejęcia sesji użytkownika.</b></div>'); }
else
{
$_SESSION['owner']=$_SERVER['HTTP_USER_AGENT'];
}
##-session security-##
$logged=isset($_SESSION['uid']);
try
{
$config=
[
'db_host'=>'127.0.0.1',
'db_name'=>'baza',
'db_user'=>'uzytkownik',
'db_pass'=>'haslo'
];
$pdo=new PDO
(sprintf('mysql:host=%s;dbname=%s;charset=utf8;encoding=utf8',$config['db_host'],$config['db_name']),$config['db_user'],$config['db_pass'],[PDO
::ATTR_ERRMODE=>PDO
::ERRMODE_EXCEPTION,PDO
::ATTR_PERSISTENT=>true
,PDO
::MYSQL_ATTR_INIT_COMMAND=>'SET time_zone=\''.date('P').'\'']); }
catch(PDOException $e)
{
exit(sprintf('<div class="error">Wystąpił problem podczas połączenia z bazą danych.<br/>%s</div>',$e->getMessage())); }
if ($logged)
{
$user=$pdo->prepare('SELECT `staff` FROM `users` WHERE `userId`=? LIMIT 1');
$user->execute([$_SESSION['userId']]);
$user=$user->fetch(PDO::FETCH_ASSOC);
}
<ul>
<li><a href="/">Strona główna</a></li>',($logged?($user['staff']?(
'<li><a href="/addpost/">Dodaj post</a></li>
<li><a href="/addcategory/">Dodaj kategorie</a></li>':'')).
'<li><a href="/signout/">Wyloguj</a></li>'):(
'<li><a href="/signin/">Logowanie</a></li>
<li><a href="/signup/">Rejestracja</a></li>'),
'</ul>
</nav>
</header>
<main>';
include sprintf('%s/pages_include/%s.php',RP
,$page['name']);
Ps.
Ten HTML w PHP tez mi sie nie podoba (to co w echo), jednak cos wolniej ladowala mi sie strona gdy byl html poza php, jakby go kompresja nie dosiegala ale nie mam jak to potwierdzic.
Ten post edytował KsaR 28.09.2015, 08:49:26