Ich habe dieses Loginscript aus einem Tutorial von www.webmasterpro.de. Ich glaube es verstanden zu haben, trotzdem scheinen für mich unerklärliche Fehler vorhanden zu sein. Ich habe den kompletten Quellcode hier gepostet, jeweils die Fehlermeldungen notiert und Verweise angelegt.
Das Script ist ein einfaches Loginsystem, welches ID, Name, Email und Passwort speichert und Ränge verteilt. Dies alles in einer MySQL Tabelle. Im Anmeldeformular(anmelden.php) kann man sich anmelden, und im Profil(profil.php) seine Angaben verändern und wieder speichern. schutz.php ist im Grunde der Loginbereich, welcher nur registrierte Benutzer mit korekter PW eingabe hineinlässt. Es lassen sich nun beliebig die gewünschten Seiten schützen.
Um ein wenig Licht ins Dunkel zu bringen, würde ich mich freuen, wenn Sie sich folgendes anschauen würden.
MySQL-Tabelle:
CREATE TABLE usertabelle (
id int(11) NOT NULL auto_increment,
name varchar(30) NOT NULL default '',
pw varchar(100) NOT NULL default '',
rang int(2) NULL default '',
email varchar(150) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Verbindung zur Datenbank:
mysqlconnect.php
Das Schutzscript:
Es wird eine Session gestartet, in der gleich die benutzerdaten gespeichert werden. Danach folgt eine Abfrage-Schleife, ob die Daten vorhanden sind, bzw. richtig sind und unten sind die Eingabeformulare.
schutz.php
Hier erscheint schonmal folgende Fehlermeldung:
Warning:
Zeile 5 wäre diese:
Anmeldungsformular mit Abfrageschleife:
anmelden.php
Die Daten werden nicht in die Tabelle übertragen.
Profileditscript:
profil.php
Ohne die fehlerfreie Durchführung von schutz.php funktioniert auch profil.php nicht.
Die Daten werden außerdem nicht in die MySQL Tabelle übergeben. Und wenn ich sie auf anderem Wege eintrage, interpretiert das Script die Daten nicht.
In der Datei userlist.php:
wird die Fehlermeldung
dies betrifft folgenden Teil:
Für jede Hilfe wäre ich dankbar.
Das Script ist ein einfaches Loginsystem, welches ID, Name, Email und Passwort speichert und Ränge verteilt. Dies alles in einer MySQL Tabelle. Im Anmeldeformular(anmelden.php) kann man sich anmelden, und im Profil(profil.php) seine Angaben verändern und wieder speichern. schutz.php ist im Grunde der Loginbereich, welcher nur registrierte Benutzer mit korekter PW eingabe hineinlässt. Es lassen sich nun beliebig die gewünschten Seiten schützen.
Um ein wenig Licht ins Dunkel zu bringen, würde ich mich freuen, wenn Sie sich folgendes anschauen würden.
MySQL-Tabelle:
CREATE TABLE usertabelle (
id int(11) NOT NULL auto_increment,
name varchar(30) NOT NULL default '',
pw varchar(100) NOT NULL default '',
rang int(2) NULL default '',
email varchar(150) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Verbindung zur Datenbank:
mysqlconnect.php
PHP Code:
<?php
$db = mysql_connect ('localhost','root') or die (mysql_error());
mysql_select_db ('community',$db) or die (mysql_error());
?>
Es wird eine Session gestartet, in der gleich die benutzerdaten gespeichert werden. Danach folgt eine Abfrage-Schleife, ob die Daten vorhanden sind, bzw. richtig sind und unten sind die Eingabeformulare.
schutz.php
PHP Code:
<?php session_start();
include("mysqlconnect.php");
$connect = mysql_query("SELECT * FROM $usertabelle WHERE LCASE(name) = LCASE('".$_POST["name1"]."') AND pw = '". md5($_POST["pw1"]) ."'");
if (mysql_num_rows($connect) == 1)
{
$row=mysql_fetch_array($connect);
$name1 = $row['name'];
session_register("name1");
session_register("pw1");
$userid = $row['id'];
$rang = $row['rang'];
$email = $row['email'];
}else{
if(isset($login)){
echo "Deine Eingaben waren fehlerhaft.";
};
echo "
<table width='200'>
<tr>
<td width='50'>
Name:
</td>
<td width='150'>
<form method='POST' action='schutz.php'>
<input type='hidden' name='login' value='login'>
<input type='text' name='name1' value='$name1' size='20'>
</td>
</tr>
<tr>
<td width='50'>
Passwort:
</td>
<td width='150'>
<input type='PASSWORD' size='20' value='$pw1' name='pw1'><br>
</td>
</tr>
<tr>
<td width='50'></td>
<td width='150'>
<input type='submit' name='login' value='Login'>
</td>
</tr>
</table>
</form>";
$rang = "0";
};
if($logout=="1"){
session_destroy();
echo "Sie wurden erfolgreich ausgeloggt";
$rang = "0";
};
?>
Hier erscheint schonmal folgende Fehlermeldung:
Warning:
Parse error: parse error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in ...community\schipsel\schutz.php on line 5
PHP Code:
$connect = mysql_query("SELECT * FROM $usertabelle WHERE LCASE(name) = LCASE('$_POST[name1]') AND pw = '". md5($_POST[pw1]) ."'");
Anmeldungsformular mit Abfrageschleife:
anmelden.php
PHP Code:
<?php
include("mysqlconnect.php");
if(isset($new)){
$fehler = "Folgende Fehler traten auf: <br>";
$usertest = mysql_query("SELECT * FROM $usertabelle WHERE LCASE(name) = LCASE('$_POST[nick]')");
if (mysql_num_rows($usertest) == 1)
{
$fehler = "$fehler -Dieser Benutzername wird bereits benutzt<br>";
$fehler2 = "1";
};
if($_POST[nick]==""){
$fehler = "$fehler -Du hast keinen Namen angegeben.<br>";
$fehler2 = "1";
};
if($_POST[email]==""){
$fehler = "$fehler -Du hast keine E-Mail Adresse angegeben.<br>";
$fehler2 = "1";
};
if($_POST[passwort1]=="" or $_POST[passwort1]!=="$_POST[passwort2]"){
$fehler = "$fehler -Deine beiden Passwort eingaben sind unterschiedlich:<BR>";
$fehler2 = "1";
};
if(!isset($fehler2)){
$passwort3 = md5($_POST[passwort1]);
$new = "
INSERT INTO $usertabelle
(name, pw, email, rang)
VALUES
('$_POST[nick]', '$_POST[passwort3]', '$_POST[email]','2')";
mysql_query($new) OR die(mysql_error());
echo "<br>Deine Anmeldung war erfolgreich.";
exit;
}else{
echo "$fehler";
};
};
echo"
<form action='anmelden.php' method='post'>
<table><tr>
<td>Name:</td>
<td><input type='text' name='nick' value='$nick'></td>
</tr>
<tr>
<td>E-Mail:</td>
<td><input type='text' name='email' value='$email'></td>
</tr>
<tr>
<td>Passwort:</td>
<td><input type='password' name='passwort1' value='$passwort1'></td>
</tr><tr>
<td>Passwort wiederholen:</td>
<td><input type='password' name='passwort2' value='$passwort2'></td>
</tr>
<td>
<input type='hidden' name='new' value='$new'>
<input type='submit' name='new' value='Anmelden'></td>
</form>
<td></td>
<td>
</td>
</tr>
</table>";
?>
Die Daten werden nicht in die Tabelle übertragen.
Profileditscript:
profil.php
PHP Code:
<?php
include("schutz.php");
if($rang>0){
if(isset($_POST["edit"])){
$passwort3 = md5($_POST["passwort1"]);
$usertest = mysql_query("SELECT * FROM $usertable WHERE id='userid'");
if (mysql_num_rows($usertest) == 1)
{
$fehler = "$fehler -Dieser Benutzername wird bereits benutzt.<br>";
$fehler2 = "1";
};
if($_POST["passwort1"]!==$_POST["passwort2"]){
$fehler = "$fehler -Deine beiden Passwort eingaben sind nicht identisch.<br>";
$fehler2 = "1";
};
if($passwort3=$row['pw']){
$passwort3 = $row['pw'];
};
if(!isset($fehler)){
$sql= "UPDATE $db_name.".$usertable."
SET
name = $_POST[name1],
email = $_POST[email],
pw = '$passwort3'
WHERE id = '$userid'";
mysql_query($sql) OR die(mysql_error());
$pw1 = "$passwort3";
session_register("pw1");
echo "<br>Dein Passwort wurde geändert.";
exit;
};
};
echo "
<form action='profil.php' method='post'>
<table>
<tr>
<td>
Username:
</td>
<td>
<input type='text' name='name1' value='$name1'>
</td></tr>
<tr>
<td>
E-Mail
</td>
<td>
<input type='test' name='email' value='$email'>
</td></tr>
<tr>
<td>
Neues Passwort:
</td>
<td>
<input type='password' name='passwort1' value='$passwort1'>
</td></tr>
<tr>
<td>
Neues Passwort wiederholen:
</td>
<td>
<input type='password' name='passwort2' value='$passwort2'>
</td></tr>
<tr>
<td>
</td>
<td>
<input type='hidden' name='edit' value='$edit'>
<input type='submit' name='edit' value='Änderungen übernehmen'>
</td></form></td></tr></table>";
}
?>
Ohne die fehlerfreie Durchführung von schutz.php funktioniert auch profil.php nicht.
Die Daten werden außerdem nicht in die MySQL Tabelle übergeben. Und wenn ich sie auf anderem Wege eintrage, interpretiert das Script die Daten nicht.
In der Datei userlist.php:
PHP Code:
<?php
include("mysqlconnect.php");
echo "
<table>
";
$sql = "
SELECT
*
FROM
$usertable
ORDER by
name";
$result = mysql_query($sql);
while($row=mysql_fetch_array($result)) {
echo "
<tr>
<td>".$row["name"]."</td>
<td>".$row["email"]."</td>
</tr>
";
}
echo "
</table>
";
?>
wird die Fehlermeldung
"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ...community\schipsel\userlist.php on line 20"
ausgegeben, was
ausgegeben, was
PHP Code:
$sql = "
SELECT
*
FROM
$usertabelle
ORDER by
name";
$result = mysql_query($sql);
/* Zeile 20 */ while($row=mysql_fetch_array($result)) {
echo "
<tr>
<td>".$row["name"]."</td>
<td>".$row["email"]."</td>
</tr>
";
}
Für jede Hilfe wäre ich dankbar.
Comment