php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
kann mich in mein cms nicht einloggen


 
tobydom
01-12-2005, 16:43 
 
hallo allerseits
ich bin neu hier und auch neu in php
um anzufangen habe ich ein fertiges kleines CMS (aus dem Buch Webseiten gestalten und programmieren von Mark Lubkowitz) genommen und angefangen es für mich umzubasteln.
Das hat auch ganz gut geklappt.
Jetzt stehe ich vor folgendem Problem:
Wenn ich mich verscuhe in den Adminbereich meines CMS einzuloggen, passiert gar nichts. Wenn ich aber gleichzeitig das MiniCMS von M.L. starte und mich dort einlogge, bin ich automatisch auch in meinem eigenen cms eingelogged.

Kann mir jemand sagen wo mein Fehler liegen könnte oder auch, welche Codeteile ich posten muss, damit man von außen etwas dazu sagen kann?

thanx a lot im voraus,
toby

 
mrhappiness
01-12-2005, 16:46 
 
Original geschrieben von tobydom
Kann mir jemand sagen wo mein Fehler liegen könnte oder auch, welche Codeteile ich posten muss, damit man von außen etwas dazu sagen kann?Die relevanten ;)

das Loginformular für das CMS die Datei, die das Loginformular für das CMS verarbeitet (steht im action-Attribut des Formulars)
aber bitte den Teil, der die Daten prüft, ist ja hoffentlich kommentiert/im Buch beschrieben
die beiden Punkte analog für das miniCMS
den Teil der beim CMS prüft, ob du eingeloggt bist (anhand Kommentare/Beschreibung im Buch)

 
tobydom
01-12-2005, 17:48 
 
ok. Dann will ichs mal versuchen.
Also:


....
ich hab hier mal alles rausgelöscht. das war ja ne zumutung.... ;-)
toby
....



So. Das wars glaube ich.
Ich hoffe, ihr könnt was damit anfangen.
gruß,
toby

 
tobydom
01-12-2005, 17:51 
 
Hoppala.
was hab ich denn jetzt schon wieder verbockt?
ich hoffe man kann mit dieser einzeiligen anzeige was anfangen.
wenn nicht muss ich das wohl nochmal versuchen zu ändern. Ich hab hier einfach auf PHP geklickt und meinen code per paste ins aufpoppende fenster eingefügt. und jetzt das....:rolleyes:

 
flyx
01-12-2005, 17:59 
 
änder das mal lieber, so kann das kein mensch lesen

 
tobydom
01-12-2005, 18:05 
 
Ich glaub ich habs grad rausgefunden. (warum mein php-code keine zeilenumbrüche hatte, nicht warum mein login nicht funzt) also, auf ein neues:

das Loginformular für das CMS

login.inc.php:
<?php

/* Session initialisieren */
session_start();

/* Überprüft, ob ein Login erfolgt ist */
function is_logged_in()
{
global $base;

/* User angemeldet? */
if($_SESSION['authenticated'] == true)
{
return true;
}
/* Login ausgeben */
else
{
$content = '<h1>Login</h1>';
$content .= '<form action="login.php" method="post">';
$content .= '<table border="0" cellpadding="2" cellspacing="0">';
$content .= '<tr>';
$content .= '<td>Benutzername:</td><td><input type="text"
name="username" size="32" maxlength="64"></td>';
$content .= '</tr><tr>';
$content .= '<td>Passwort:</td><td><input type="password"
name="password" size="32"></td>';
$content .= '</tr><tr>';
$content .= '<td></td><td><input type="submit" value="Login"></td>';
$content .= '</tr>';
$content .= '</table>';
$content .= '</form>';

$template = get_file_as_string($base['adm_template']);
$template = str_replace($base['tag_start'].'title'.
$base['tag_end'],$base['adm_title'],$template);
$template = str_replace($base['tag_start'].'naview'.
$base['tag_end'],'&nbsp;',$template);
$template = str_replace($base['tag_start'].'navigation'.
$base['tag_end'],'&nbsp;',$template);
$template = str_replace($base['tag_start'].'content'.
$base['tag_end'],$content,$template);
$template = str_replace('$PHP_SELF',$PHP_SELF,$template);
echo stripslashes($template);
return false;
}
}

?>

die Datei, die das Loginformular für das CMS verarbeitet

login.php:
<?php

/* Session initialisieren */
session_start();

/* übergebene Variablen auslesen */
$username = $_POST['username'] ?
$_POST['username'] : false;
$password = $_POST['password'] ?
$_POST['password'] : false;

if($username && $password)
{
/* verschlüsseltes Passwort erzeugen */
$encrypted = md5($username,$password);

include('../inc/database.inc.php');
$connection = mysql_connect($db['host'],$db['uid'],$db['pwd']);
if($connection)
{
if(mysql_select_db($db['db']))
{
$sql = "SELECT id FROM user WHERE (username = '$username')
AND (password = '$encrypted') AND (active = 'true')";
$result = mysql_query($sql);
if($result && (@mysql_num_rows($result) > 0))
{
$row = mysql_fetch_row($result);
$_SESSION['authenticated'] = true;
$_SESSION['user_id'] = $row[0];
$_SESSION['username'] = $username;
}
else
{
$_SESSION['authenticated'] = false;
}
}
}
}

/* Umleitung */
header('Location: index.php');

?>

die beiden Punkte analog für das miniCMS

login.inc.php:
<?php

/* Session initialisieren */
session_start();

/* Überprüft, ob ein Login erfolgt ist */
function is_logged_in()
{
global $base;

/* User angemeldet? */
if($_SESSION['authenticated'] == true)
{
return true;
}
/* Login ausgeben */
else
{
$content = '<h4>Login</h4>';
$content .= '<form action="login.php" method="post">';
$content .= '<table border="0" cellpadding="2" cellspacing="0">';
$content .= '<tr>';
$content .= '<td>Benutzername:</td><td><input
type="text" name="username" size="32"
maxlength="64"></td>';
$content .= '</tr><tr>';
$content .= '<td>Passwort:</td><td><input type="password"
name="password" size="32"></td>';
$content .= '</tr><tr>';
$content .= '<td></td><td><input type="submit" value="Login"></td>';
$content .= '</tr>';
$content .= '</table>';
$content .= '</form>';

$template = get_file_as_string($base['adm_template']);
$template = str_replace($base['tag_start'].'title'.
$base['tag_end'],$base['adm_title'],$template);
$template = str_replace($base['tag_start'].'shortnav'.
$base['tag_end'],'&nbsp;',$template);
$template = str_replace($base['tag_start'].'navigation'.
$base['tag_end'],'&nbsp;',$template);
$template = str_replace($base['tag_start'].'content'.
$base['tag_end'],$content,$template);
$template = str_replace('$PHP_SELF',$PHP_SELF,$template);
echo stripslashes($template);
return false;
}
}

?>

login.php:
<?php

/* Session initialisieren */
session_start();

/* übergebene Variablen auslesen */
$username = $_POST['username'] ? $_POST['username'] : false;
$password = $_POST['password'] ? $_POST['password'] : false;

if($username && $password)
{
/* verschlüsseltes Passwort erzeugen */
$encrypted = md5($username,$password);

include('../inc/database.inc.php');
$connection = mysql_connect($db['host'],$db['uid'],$db['pwd']);
if($connection)
{
if(mysql_select_db($db['db']))
{
$sql = "SELECT id FROM user WHERE (username = '$username')
AND (password = '$encrypted') AND (active = 'true')";
$result = mysql_query($sql);
if($result && (@mysql_num_rows($result) > 0))
{
$row = mysql_fetch_row($result);
$_SESSION['authenticated'] = true;
$_SESSION['user_id'] = $row[0];
$_SESSION['username'] = $username;
}
else
{
$_SESSION['authenticated'] = false;
}
}
}
}

/* Umleitung */
header('Location: index.php');

?>

den Teil der beim CMS prüft, ob du eingeloggt bist

index.php (admin):
<?php

/* Konfigurationsdateien laden */
include('../inc/base.inc.php');
include('../inc/adminfunctions.inc.php');
include('../inc/login.inc.php');

/* Überprüfen ob Login erfolgt ist, ggf. Anmeldemöglichkeit bieten */
if(is_logged_in())
{
/* übergebene Variablen auslesen */
$cmd = $_GET['cmd'];
$id = $_GET['id'];

/* Template einlesen */
$template = get_file_as_string($base['adm_template']);

/* Inhalt laden */
switch(strtolower($cmd))
{
default:
case 'aktuell':
$base['adm_content'] = '<p>'.$base['adm_naview'].'
<i>Admin / Home / Aktuelles</i></p>';
$base['adm_content'] .= load_admin_aktuell();
break;
case 'aktuelledit':
$base['adm_content'] = '<p>'.$base['adm_naview'].'
<i>Admin / Home / Aktuelles bearbeiten</i></p>';
$base['adm_content'] .= load_admin_aktuelledit($id);
break;
case 'aktuelladd':
$base['adm_content'] = '<p>'.$base['adm_naview'].'
<i>Admin / Home / Aktuelles erstellen</i></p>';
$base['adm_content'] .= load_admin_aktuelladd($id);
break;
case 'aktuelldel':
$base['adm_content'] = '<p>'.$base['adm_naview'].'
<i>Admin / Home / Aktuelles löschen</i></p>';
$base['adm_content'] .= load_admin_aktuelldel($id);
break;
}

/* Platzhalter ersetzen */
$template = str_replace($base['tag_start'].'title'.$base['tag_end'],
$base['adm_title'],$template);
$template = str_replace($base['tag_start'].'navigation'.$base['tag_end'],
$base['adm_navigation'],$template);
$template = str_replace($base['tag_start'].'naview'.$base['tag_end'],
$base['adm_naview'],$template);
$template = str_replace($base['tag_start'].'content'.$base['tag_end'],
$base['adm_content'],$template);
$template = str_replace('$PHP_SELF',$PHP_SELF,$template);

/* Template ausgeben */
echo stripslashes($template);
}

?>

So. Das wars glaube ich.
Ich hoffe, ihr könnt was damit anfangen.
gruß,
toby

PS Habs nochmal editiert und auf nem 15" bei 800x600 getestet. Ich hoffe ihr könnt es jetzt lesen.
gruß, toby

 
tobydom
02-12-2005, 16:41 
 
HELP:(
please....:{
ich weiß nich weiter.....
:baby

 
thommyk
02-12-2005, 17:08 
 
Dein Code ist immer noch zu breit, besonders bei den Select-Abfragen und den $content .= Stellen.

 
tobydom
02-12-2005, 17:36 
 
hab's editiert.
toby


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:37 Uhr.