Webový rozcestník v PHP – administrace

5. dubna 2002

Tentokrát vytvoříme pro náš webový rozcestník administrační skript, díky kterému budete moci zakládat a editovat kategorie a registrované odkazy.

Výsledek naší práce (webový rozcestník) si můžete prohlédnout zde.

S pomocí administračního skriptu budete přidávat a editovat jednotlivé kategorie v rozcestníku a odkazy, které vám do něho někdo zapsal. Kdyby se náhodou někdo dostal do vaší administrační části, vše je zabezpečeno heslem, které jste si nastavili v minulém konfiguračním souboru config.php .

1. Vytvořte začátek stránky, který obsahuje upozornění na případnou existenci souboru install.php. Pokud v dané složce existuje install.php, nepustí vás skript dále a zakončí se (viz. exit;). Kdybyste nesmazali instalační soubor, mohl by kdokoli, kdo by na něj narazil, změnit nastavení rozcestníku:

<?
require(„config.php“);
?>
<html>
<head>
<title><? echo „$heading“; ?> – Administrace</title>
<style>
P,A,BODY {font-family: Verdana,Helvetica,Arial; font-size: 13px;}
A:HOVER {color: <? echo „$hlink“; ?>;}
</style></head>
<body bgcolor=“<? echo „$bgcolor“; ?>“ text=“<? echo „$text“; ?>“ link=“<? echo „$link“; ?>“ vlink=“<? echo „$vlink“; ?>“ alink=“<? echo „$alink“; ?>“>
<p><b><? echo „$heading“; ?> – Administrace</b><hr></p><p>
<?php
if(file_exists(„install.php“)) { // nesmí existovat install.php
echo „Smažte <b>install.php</b> před pokračováním.</p>
<p>
<hr>
[<a href=\“$home_url\“>$homename</a>] [<a href=\“admin.php\“>Index Administrace</a>] </body>
</html>“;
exit;
}
if(!$f) {
?>

2. Pokud bude instalační skript smazán, zobrazí se tato část:

<ul>
<li><a href=“admin.php?f=cat“>Přidat/Editovat Kategorie</a>
<li><a href=“admin.php?f=link“>Editovat odkazy</a>
</ul>

3. Pokud klepnete na Přidat/Editovat kategorie, zobrazí se nabídka pro přidání a editaci kategorie:

<?php
} else {
// kategorie
if($f==cat) {
if(!$a) {
?>
<ul>
<li><a href=“admin.php?f=cat&a=add“>Přidat novou kategorii</a>
<li><a href=“admin.php?f=cat&a=edit“>Editovat kategorii</a>
</ul>

4. Další část slouží pro přidání kategorie. Na desátém řádku se kontroluje heslo, které jste zadali ve formuláři. Jakmile budou zadaná všechna pole formuláře, zapíše se kategorie do MySQL:

<?php
} else {
if($a==’add‘) {
if($d) {
if($jmenokat && $popiskat && $testpass) {
if($testpass!=$adminpass) {              // při neshodě zadaného hesla a hesla v config.php vypíše chybu. 
echo „Heslo je špatné.</p>
<p>
<hr>
[<a href=\“$home_url\“>$homename</a>] [<a href=\“admin.php\“>Index Administrace</a>] </body>
</html>“;
exit;
}
// konexe do databáze:
$conn=mysql_connect($server,$dbuser,$dbpass);
$query=“select count(*) from odkazkat“;
$result=mysql_db_query($dbname,$query,$conn);
$counter = mysql_result($result,0);
$counter++;
$query=“INSERT INTO odkazkat VALUES(‚$counter‘,’$jmenokat‘,’$popiskat‘)“;
$result=mysql_db_query($dbname,$query,$conn);
?>
Kategorie byla přidána.
<?php
} else { // jestliže nebylo vše zadáno
echo „Všechna pole nebyla zadána.</p>
<p>
<hr>
[<a href=\“$home_url\“>$homename</a>] [<a href=\“admin.php\“>Index Administrace</a>] </body>
</html>“;
exit;
}
} else {
?>
<form action=“admin.php“ method=“POST“>
Jméno kategorie:<br><input size=“30″ name=“jmenokat“ maxlength=“30″>
<br>
Popis kategorie:<br><input size=“50″ name=“popiskat“ maxlength=“50″><br>
Admin. heslo:<br><input type=“password“ name=“testpass“ size=“30″><br>
<input type=“hidden“ name=“f“ value=“cat“>
<input type=“hidden“ name=“a“ value=“add“>
<input type=“submit“ name=“d“ value=“addcat“>
</form>

5. V této části pro editaci kategorií je opět kontrola hesla a pod ní samotná část editace (update) dané kategorie do MySQL databáze: 

<?php
}
} elseif($a==’edit‘) {
if($e) {
if($jmenokat && $popiskat && $testpass) {
if($testpass!=$adminpass) { // kontrola hesla
echo „Špatné heslo.</p>
<p>
<hr>
[<a href=\“$home_url\“>$homename</a>] [<a href=\“admin.php\“>Index Administrace</a>] </body>
</html>“;
exit;
}
// konexe mySQL:
$conn=mysql_connect($server,$dbuser,$dbpass);
$query=“UPDATE odkazkat SET hlavicka=’$jmenokat‘,popisek=’$popiskat‘ WHERE uid =’$uid'“;
$result=mysql_db_query($dbname,$query,$conn);
?>
Kategorie byla zeditována.
<?php
} else {
echo „Všechna pole nebyla kompletní.</p>
<p>
<hr>
[<a href=\“$home_url\“>$homename</a>] [<a href=\“admin.php\“>Index Administrace</a>] </body>
</html>“;
exit;
}
} else {
if($d) {
// konexe:
$conn=mysql_connect($server,$dbuser,$dbpass);
$query=“select * from odkazkat where uid=’$d'“;
$result=mysql_db_query($dbname,$query,$conn);
list($uid,$hlavicka,$desc)=mysql_fetch_row($result);
?>
<form action=“admin.php“ method=“POST“>
Jméno kategorie:<br><input size=“30″ name=“jmenokat“ maxlength=“30″ value=“<? echo „$hlavicka“; ?>“>
<br>
Popis:<br><input size=“50″ name=“popiskat“ maxlength=“50″ value=“<? echo „$desc“; ?>“><br>
Admin. heslo:<br><input type=“password“ name=“testpass“ size=“30″><br>
<input type=“hidden“ name=“f“ value=“cat“>
<input type=“hidden“ name=“a“ value=“edit“>
<input type=“hidden“ name=“uid“ value=“<? echo „$d“; ?>“>
<input type=“submit“ name=“e“ value=“editcat“>
</form>

6. Nyní necháte vypsat všechny existující kategorie. Pak stačí jen klepnout na tu vámi vybranou a můžete začít editovat:

<?php
} else {
echo „<ul>
„;
// konexe do MySQL
$conn=mysql_connect($server,$dbuser,$dbpass);
$query="select * from odkazkat";
$result=mysql_db_query($dbname,$query,$conn);
while($row=mysql_fetch_array($result)) {
echo „<li><a href=\"admin.php?f=cat&a=edit&d=$row[uid]\">$row[hlavicka]</a>
„;
}
echo „</ul>";
}
}
}
}

7. Následující část slouží pro editaci odkazů. V editaci se vypíší všechny zadané parametry pro daný link a vy budete moci zeditovat vpodstatě vše. Jméno, odkaz, popis i jeho kategorii. Poté se vypíší zadané odkazy stejně, jako seznam kategorií, opět jen klepnete myší a editujete:

// linky
} elseif($f==link) {
if($d) {
if($e) {
if($jmenolinku && $linkurl && $popislinku && $kategorie && $testpass && $uid) { // musí být opět zadáno vše
if($testpass!=$adminpass) {
echo „Špatné heslo.</p>
<p>
<hr>
[<a href=\“$home_url\“>$homename</a>] [<a href=\“admin.php\“>Index Administrace</a>] </body>
</html>“;
exit;
}
$conn=mysql_connect($server,$dbuser,$dbpass);
$query=“UPDATE odkazy SET kategorie=’$kategorie‘,jmeno=’$jmenolinku‘,linkurl=’$linkurl‘,popisek=’$popislinku‘ where uid=’$uid'“;
$result=mysql_db_query($dbname,$query,$conn);
?>
Odkaz zeditován.
<?php
} else {
echo „Všechna pole nebyla zadána.</p>
<p>
<hr>
[<a href=\“$home_url\“>$homename</a>] [<a href=\“admin.php\“>Index Administrace</a>] </body>
</html>“;
exit;
}
} else {
$conn=mysql_connect($server,$dbuser,$dbpass);
$query=“select * from odkazy where uid=’$d'“;
$result=mysql_db_query($dbname,$query,$conn);
list($uid,$kategorie,$jmenolinku,$linkurl,$desc,$hits)=mysql_fetch_row($result);
?>
<form action=“admin.php“ method=“POST“>
Jméno odkazu:<br>
<input size=“30″ name=“jmenolinku“ value=“<? echo „$jmenolinku“; ?>“><br>
URL odkazu:<br>
<input size=“30″ name=“linkurl“ value=“<? echo „$linkurl“; ?>“><br>
Popis:<br>
<input size=“50″ name=“popislinku“ value=“<? echo „$desc“; ?>“><br>
<?php
$conn=mysql_connect($server,$dbuser,$dbpass);
$q=“select * from odkazkat“;
$r=mysql_db_query($dbname,$q,$conn);
while($row=mysql_fetch_array($r)) {
if($row[uid]==$kategorie) {
echo „<input type=\“radio\“ name=\“kategorie\“ value=\“$row[uid]\“ CHECKED>$row[hlavicka] „;
} else {
echo „<input type=\“radio\“ name=\“kategorie\“ value=\“$row[uid]\“>$row[hlavicka] „;
}
}
?>
<br>
Admin. heslo:<br>
<input type=“password“ name=“testpass“><br>
<input type=“hidden“ name=“uid“ value=“<? echo „$uid“; ?>“>
<input type=“hidden“ name=“f“ value=“link“>
<input type=“hidden“ name=“d“ value=“<? echo „$d“; ?>“>
<input type=“submit“ name=“e“ value=“edit_link“>
</form>
<?php
}
} else {
echo „<ul>“;
$conn=mysql_connect($server,$dbuser,$dbpass);
$query=“select * from odkazy“;
$result=mysql_db_query($dbname,$query,$conn);
while($row=mysql_fetch_array($result)) {
echo „<li><a href=\“admin.php?f=link&d=$row[uid]\“>$row[jmeno]</a>“;
}
echo „</ul>“;
mysql_free_result($result);
}
}
}
?>

8. Zakončení skriptu bude vypadat takto:

</p>
<p>
<hr>
[<a href=“<? echo „$home_url“; ?>“><? echo „$homename“; ?></a>] [<a href=“admin.php“>Index Administrace</a>] [<a href="links.php">Rozcestník</a>] </body>
</html>

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *