Anzeige
Tutorialbeschreibung

HOMEPAGE aus DATENBANK (Teil 2)

HOMEPAGE aus DATENBANK (Teil 2)

Dieses Mal wird es interessanter, weil wir nun lernen, wie wir ein ACP gestalten und welche Möglichkeiten dort gegeben sind.

Vorweg nur soviel: im Wesentlichen verzichten wir auf ‚Design-Schnickschnack’, um nie aus den Augen zu verlieren, worauf es im Kern ankommt. Ein paar Kleinigkeiten (damit unser tool mit wenig Aufwand einigermaßen ansehnlich bleibt), baue ich im jeweiligen Sheet (zumeist im Body-Tag) kommentarlos ein.e Beschreibung hier einfügen


Also fangen wir mit dem Ordner an: in der directory, wo wir (aus Teil 1) unsere index.php abgelegt haben, errichten wir nun mit ftp einen Ordner mit der Bezeichnung admin. Damit wir uns nicht in Session-Details verlieren, schützen wir seinen Inhalt mit .htaccess!

Dazu benötigen wir bekanntlich 2 Dateien:

  eine .htaccess, die folgenden Inhalt hat:

AuthName "Administrationsbereich"
AuthType Basic
AuthUserFile /home/www/zumeistUsername/html/admin/.htpasswd
require valid-user

Diese Zeile ist wichtig! …
/home/www/zumeistUsername/html/admin/.htpasswd – sie legt den ABSOLUTEN Serverpfad zur Passwortdatei (die auch im Ordner admin liegen muss und den Ordner vor Zugriffen schützt) fest!

eine .htpasswd, die folgenden Inhalt hat (wenn wir als Standardlogin administrator/administrator festlegen!):

administrator:$1$kGaH0qhi$5LC0YWUuFoiA9vkDB8y.K1

Sie Verschlüsselung des Passworts ist in crypt und stellt die Standardverschlüsselung bei .htaccess dar!

Kurzer Exkurs:
Ein Passwort wird folgendermaßen mit crypt verschlüsselt:
<? $passwort=crypt(“administrator“);/*das ergibt jetzt unsere obige verschlüsselte Zeichenfolge. Natürlich können Sie mit diesem Snippet jedes beliebige Passwort verschlüsseln!*/?>


Die nächste Datei (wir können ja jetzt über den Browser den Admin-Bereich nur mehr mit administrator/administrator betreten), ist sozusagen unsere Verteilerseite, wo wir die gewünschte Administrationsfunktion anklicken können!

Wir nennen sie wieder index.php und legen sie im Ordner admin ab!
Sie sieht so aus:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
  <head>
    <title><?php echo ’Administration’;?></title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  </head>
  <body style=”font-face:Verdana;font-size:10pt” link=”black” alink=”black” vlink=”black”>
  <b>Administrationszentrale : <b><br /><br /><br /><br />
<a href=”new.php” target=”_blank”> Neue Seite</a><br /><br />
<a href=”del.php” target=”_blank”> Seite l&ouml;schen</a><br /><br />
<a href=”edit.php” target=”_blank”> Seite bearbeiten</a><br /><br />
  </body>
</html>

Damit wir hier nicht nur platzsparend, sondern auch mit guten Performance-Werten arbeiten, werden wir pro Funktion nicht 2 sondern nur eine Sheet verwenden, soferne das geht. Ich zeige Ihnen sofort wie das geht.

Fangen wir mit new.php an:

<?php
if (!isset($submit))
{
echo'<form method="POST" action="'.$PHP_SELF.'"><br>
Linktext:<br>
<input type="text" size="50" name="linktext"><br><br>
site:<br>
<input type="text" size="50" name="site"><br><br>
<input type="hidden" size="50" name="content" value=”Neue Seite”>
<input type="submit" name="submit" value="Neue Seite speichern"></form>';
}
else
{
include ’connect.php’;
$linktext=(addslashes(‘linktext’));
$site=(addslashes(‘site’));
$content=(addslashes(‘content’));
$query="INSERT INTO `hp` (`linktext`, `site`, `content`) VALUES ('".$linktext."', '".$site."', '".$content."')";
mysql_query($query);
mysql_close();
echo ’Ihre Seite <b>’.$linktext.’</b> wurde erstellt!’
}
?>

Einige Erklärungen dazu:

Das Konstrukt, nicht mit 2 Sheets zu arbeiten, sondern nur in einem Sheet das Formular und die Eintragungsbefehle zu verwenden, kann nur realisiert werden, wenn man mit einer Kontrollstruktur (if) arbeitet.

Damit zunächst nur das Formular angezeigt wird, muss eine ’Ruhestellung’ kreiert werden. Das erreicht man am Besten mit ‚wenn nicht ist’ if(!isset($submit));
damit $submit geprüft werden kann, darf nicht nur der input type mit ’submit’ bezeichnet werden, sondern muss der input type auch den Namen ’submit’ bekommen; der Befehl  $PHP_SELF bedeutet, dass das Formular sich selbst abarbeitet (diesfalls die else-Konsequenz, weil die action ja nur bei Klick auf den Button erfolgt [=isset($submit)]).

Erledigt!
Damit sind wir in der Lage, per eigenem Frontend, neue Homepageseiten zu erstellen.

Bevor wir die Bearbeitung der Seite anpacken, lösen wir noch das Problem, dass vorhandene Dateien im Frontend gelöscht werden können. Diesmal verwenden wir 2 Dateien (del.php und del1.php)!

del.php:

<?php
include  ‘connect.php’;
$query = mysql_query("SELECT * FROM hp");
if (mysql_num_rows($query))
{
$linktext=$row['linktext '];
$site=$row['site'];
$id =$row[‘ID’];
echo ‘ <body style=”font-face:Verdana;font-size:10pt” link=”black” alink=”black” vlink=”black”>
<table><tr>
    <td width="33%" align="center" style="color: #000000; font-family: Verdana; font-size: 8pt">Linktext</td>
    <td width="33%" align="center" style="color: #000000; font-family: Verdana; font-size: 8pt">'site</td>
    <td width="34%" align="center" style="color: #000000; font-family: Verdana; font-size: 8pt">L&ouml;schen</td>
  </tr>’;
while($row=mysql_fetch_array($query)) {

echo'<tr>
    <td width="33%" align="center" style="color: #000000; font-family: Verdana; font-size: 8pt">'.$linktext.'</td>
    <td width="33%" align="center" style="color: #000000; font-family: Verdana; font-size: 8pt">'.$site.'</td>
    <td width="34%" align="center" style="color: #000000; font-family: Verdana; font-size: 8pt"><a href=”del1.php?id=’.$id.’”>x</a></td>
  </tr>
  ';
}
} else {
echo ’Die Abfrage hat nicht funktioniert! Grund: ’.mysql_error();
}
?>

del1.php:

<?
echo ‘  <body style=”font-face:Verdana;font-size:10pt” link=”black” alink=”black” vlink=”black”>’;
include ‘connect.php’;
$id=(addslashes($_GET[‘id’]));
$result = mysql_query("SELECT * FROM hp WHERE ID=”’.$id.’”") or die(mysql_error());
$row = mysql_fetch_array( $result );
$linktext=$row[‘linktext’];
mysql_query("DELETE FROM `hp` WHERE ID='".$id."'");
if (mysql_errno())
{
echo "MySQL-Error ".mysql_errno().": ".mysql_error()."<br />";
}
else
{
echo ’ <br /><br /><br /><center><b>Die Seite ’.$linktext.’ wurde gelöscht!</b>’
}?>

Abschließend ist noch in diesem Teil zu sagen, was bestimmt jedem aufgefallen ist, dass die Löschroutine keine Sicherung hat, die fragt, ob man ‚sicher ist’ löschen zu wollen. Das fällt aber sicher unter ‚Schnickschnack’, den man leicht dazubauen kann, sodass hier (mit Klick auf den obigen Link x) sofort gelöscht wird.


DVD-Werbung
Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von alejeune
  • 21.11.2009 - 17:10

wie schon teil 1. ein super tut.

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 10.03.2009 - 13:17

gute erklärung. finde dieses tut sehr gut.

Portrait von Kouki
  • 03.10.2008 - 20:33

auch teil 2 is super geworden, besondern gut die erklärung zu htaccess

Portrait von webmastersworld
  • 22.06.2008 - 13:05

freut mich! :-) viel spass mit dem ding und ... wenn was wissen willst, was über das tut hinausgeht, schreibe einfach :-)

lg
wmw

Portrait von whitetip
  • 22.06.2008 - 12:41

danke für deine mühe, jetzt funktioniert auch bei mir alles. habe die dateien auch angeschaut und verlgichen und auch wieder was bei gelernt (woran es lag etc.)

Portrait von webmastersworld
  • 22.06.2008 - 11:58

Nein tust du nicht, das NEUESTE download ist jetzt auch getestet auf meinem mimosenhaftesten server den es gibt (mein localhost); es war dasselbe problem, habe zwar die vars in diesen sheets schon definiert, aber an falscher stelle, weil es mir eben damals (testserver hatte damals globals On) nicht auffiel bemerkte ich diesen bug nicht.

ferner habe ich alle 'tippfehler' (falsche quotes) beseitigt (die naturgemäß entstehen, wenn man hier php-code einkopiert ... andere haben sie immer wieder beseitigen müssen, siehe unten :-)).

ich habe jetzt auch in JEDER file die connect.php-pfade richtig gestellt. ich hoffe das tut hilft dir jetzt so :-)

lg
wmw

Portrait von whitetip
  • 22.06.2008 - 04:15

ja jetzt schreibt er in die tabell und gibt sie auch aus, aber in der new1 und edit1.php sind auch die pfade zu der connect falsch. aber das ist ja kein problem. aber wenn man z.B den content löschen oder editieren möchte, listet er die nicht auf, also z.B beim löschen, wenn man auf das X klickt geht er zu del1.php?id= also einer datei die es nicht gibt, und ausser dem x sieht man auch nichts. das gleiche mit dem editieren edit1.php?id=
sorry, ich muss dich wohl schon sehr nerven

Portrait von webmastersworld
  • 21.06.2008 - 16:18

SO jetzt habe ich ein neues download gemacht, auch für mimosenserver + getestet; das geht jetzt sicher.

btw.: die connect.php hatte tatsächlich einen falschen pfad in der index.php; da habe ich eine connect von woanders kopiert und nicht gschaut :-)

in der new.php (weil ich sagte mimosenserver), habe ich eine new1.php dazugegeben, weil das ist die sicherste methode, ins besondere für server, die nur weisse seiten zeigen und keine parse-error ausgeben; ein kundenserver von mir macht mir derzeit das, ein fehlender strichpunkt etc. wird nicht gezeigt, sondern es kommt immer weisse seite :-(.

lg
wmw

Portrait von whitetip
  • 21.06.2008 - 15:45

hallo!

danke für deine mühe. ich habs wieder probiert, aber es scheint noch immer das gleiche problem vorhanden zu sein. tabellen etc. werden erstellt. dann möchte ich über new.php etwas hinzufügen, und wenn ich das aufrufen möchte, erscheint nur eine weiße seite. auch wenn ich afu bearbeiten oder löschen gehe zeigt er an. Die Abfrage hat nicht funktioniert! Grund: gibt aber keinen grund an? aja und in der install_site.php ist der pfad zur connect datei falsch angegeben?

Portrait von webmastersworld
  • 21.06.2008 - 12:29

JA jetzt habe ichs gleich gemacht, ich habe das download angepasst, ohne tippteuferl, das ja bekanntlich 'nie schläft' - müsste es ab jetzt berichtigt downzuloaden sein :-) viel spass + sry :-)

http://www.get-it.at/tuts/dbhp.zip

Portrait von webmastersworld
  • 21.06.2008 - 12:17

überall dort wo einfabefelder (formulare) variable an ein anderes file (oder wie bei news.php) an einen anderen teil des formolars übergeben; leider kann ich hier den code nocht ordentlich posten, weil er keinen zeilensung macht (= nl2br()). aber ich werde versuchen, mein gesamtes download zu koorigieren, damit das ding (nach neuerlichem download) auch bei globals Off-servern läuft. bitte lade es neuerlich um heute 19.00 uhr runter (ich glaube bis dahin finde ich zeit, das zu korrigieren)

lg
wmw

Portrait von whitetip
  • 21.06.2008 - 04:06

gilt es das $site =(addslashes($_POST['site'])); in der index zu ersetzten oder überall, sorry, steh da grad etwas auf dem schlauch. danke für deine hilfe.

Portrait von whitetip
  • 20.06.2008 - 19:18

finde das tut gut, bekomme es aber nicht zum laufen, egal ob ich selber alles gespeichert habe oder die beispieldatei runtergeladen habe. er erstellt die tabelle, aber dann zeit er nichts mehr an. ich kann zwar über phpmyadmin etwas in die zeilen schreiben, aber da gibt er nichts aus, und wenn ich es über die new.php mache, speichert er nichts in der tabelle, gibt aber auch keine fehlermeldung aus? kann mir wer helfen?

Portrait von webmastersworld
  • 20.06.2008 - 20:45

Das Skript habe ich noch so geschrieben, als hätte jeder Server die globals auf On > mittlerweile ist der Sicherheitsstandard bei Servern, dass globals Off sind, dann ist aber new.php insoweit lückenhaft, als die geposteten Variablen definiert werden müssen!

Das schaut mir so aus (z.b. das insert into klappt nicht und trotzdem kein error), als müsstest du vorher jede variable vor dem Eintrag in die DB
definieren ... also z.b. in new.php:

$site =(addslashes($_POST['']));

dann sollte es klappen!

lg
webmastersworld

Portrait von webmastersworld
  • 20.06.2008 - 20:46

halt tippteuferl:

$site =(addslashes($_POST['site']));

lg
wmw

Portrait von whitetip
  • 10.06.2008 - 08:41

sehr gutes tut

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 03.04.2008 - 15:25

besser als tutorial 1

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 01.04.2008 - 02:57

Wozu in 3 TUT unterteilen, das kann man auch in ein Stück schreiben.

Portrait von gilla
  • 23.04.2007 - 04:23

Gute Ergänzung zum ersten Teil hoffe das geht so weiter

Portrait von Aelfry
  • 17.04.2007 - 12:48

Einige Tippfehler (z.B. ein mal new.php statt news.php, usw.).

Aber sonst ganz in Ordnung

x
×
×