SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 23.02.2009, 17:47:51
Kentai Kentai ist offline
Anfänger
 
Registriert seit: Feb 2009
Alter: 32
Beiträge: 27
MySQL probleme mit PHP

Hallo liebe Communety,

Ich arbeite zurzeit an einem Infoprojekt in dem ich ein Browserbasiertes Onlinegame programmieren möchte. (Nichts all zu schweres^^)

meine PHP Kenntnisse sind furchtbar eingerostet und mit MySQL arbeite ich auch erst seit einigen Tagen.
Mit diesem Projekt hoffe ich das Stück für Stück ändern zu können.
Mein Problem ist zurzeit, dass ich ein Loginscript mit MySQL schreiben möchte.
Die Registrierung habe ich schon erstellt und sie funktioniert, aber ich kriege das Auslesen der Tabelle irgendwie nicht hin und ich kann einfach nicht herausfinden woran es liegt. Daher ist es vermutlich auch irgendetwas Formales was ich schon die ganze Zeit übersehe^^

Ich sitze nun schon seit ca. 2 Stunden an dem Problem und dachte mir: Vielleicht kann man mir hier ja helfen.

Hier der bisherige Code:
PHP-Code:
<?php
session_start
();
// store session data
$_SESSION['Name'] = $_GET[Benutzername];
$_SESSION['Kennwort'] = $_GET[Kennwort];
$db_server 'localhost';
$Benutzer 'root';
$Datenbank 'nn_legends';
$db_passwort '';
#hier baut der Server eine Verbindung mit der Datenbank auf
$db = @ mysql_connect $db_server$Benutzer$Benutzerkennwort$neue_Verbindung$client_flags )
            or die ( 
'Leider aber gibt es ein Problem mit der Datenbank, versuche es später nocheinmal, oder kontaktiere einen Administrator.' );
mysql_select_db($Datenbank);
#----------------------------------------------------------

#hier wird die Tabelle 'Benutzer' angefragt
$result mysql_query("SELECT Benutzername, Passwort FROM Benutzer");
#hier durchsucht die Schleife die Tabelle bis der Eintrag in der Spalte Benutzername der Eingabe des Logins entspricht

do
  {
  (
$row mysql_fetch_array($result));
  }
while(
$row['Benutzername'] != $Name);
If (
$row['Passwort'] == $Kennwort)
    
$_SESSION['Eingeloggt'] = true;
    echo 
"Erfolgreich eingeloggt, dein Name ist: ";
    echo 
$row['Benutzername'];
If (
$row['Passwort'] != $Kennwort)
    echo 
"Dein Passwort passt nicht zu deinem eingegebenen Namen.";
?>
Wie man sehen kann, versuche ich die Tabelle mit einer Do...While - Schleife durchzusehen, bis ein übereinstimmender Benutzername gefunden wird. Dabei soll er jedesmal sehen, ob das Passwort auch übereinstimmt. Klappt es dan schließlich, soll er sagen, dass das Login erfolgreich war und den Namen ausgeben.

Bei mir gibt er zurzeit zwar den Erfolg aus (in allen fällen und egal was ich eingebe) aber nicht den namen. Also muss irgendwas mit den Variablen oder der Schreibweise nicht stimmen, aber ich komme nicht drauf.

Ich arbeite nur mit Internetrefferenzen und hatte bereits einige Male Probleme mit der Interpretation^^

Ich bin bei jeder nennenswerten Stufe des Projekts einige Stunden im dunklen Getappt.
Heißt:
Stufe1: Tabelle finden und eintragen lassen
Stufe3: Rausfinden, dass ich IF-Konditionen nicht über HTML umsetzen kann (nicht direkt zumindest, soweit ich weiß)
Stufe3: nun wieder die Tabelle auslesen lassen^^

Ich hoffe ihr könnt mir helfen.

Falls ihr diese Anfrage für in irgendeiner Weise für unangebracht haltet, werde ich sie natürlich wieder entfernen.

Vielen Dank im Vorraus

mfg,
Kentai

PS: Falls ihr wisst was ich falsch gemacht habe, bitte erklären, ich möchte es das nächstemal richtig machen.
Mit Zitat antworten
  #2  
Alt 23.02.2009, 18:24:51
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: MySQL probleme mit PHP

Du solltest die Abfrage auf Username und Passwort im SQL erledigen!!
[google]PHP login Tutorial[/google]

Benutzername usw. per GET zu übergeben ist höchst unsicher.
Aktiviere das error_reporting()
Und achte auf SQL Injections

Geändert von DokuLeseHemmung (23.02.2009 um 18:26:33 Uhr)
Mit Zitat antworten
  #3  
Alt 23.02.2009, 18:46:37
Kentai Kentai ist offline
Anfänger
 
Registriert seit: Feb 2009
Alter: 32
Beiträge: 27
AW: MySQL probleme mit PHP

Danke für die promte antwort, ich werde mich sofort schlaumachen.

mfg,
Kentai
Mit Zitat antworten
  #4  
Alt 23.02.2009, 20:41:23
Kentai Kentai ist offline
Anfänger
 
Registriert seit: Feb 2009
Alter: 32
Beiträge: 27
AW: MySQL probleme mit PHP

So habe ein wenig rescherchiert und meinen Code auf diese Weise modifiziert:

PHP-Code:
<?php
session_start
();
$_SESSION['Name'] = $_GET[Benutzername];
$_SESSION['Kennwort'] = $_GET[Kennwort];
$db_server 'localhost';
$Benutzer 'root';
$Datenbank 'nn_legends';
$db_passwort '';

#hier baut der Server eine Verbindung mit der Datenbank auf

$db = @ mysql_connect $db_server$Benutzer$Benutzerkennwort$neue_Verbindung$client_flags )
            or die ( 
'Leider aber gibt es ein Problem mit der Datenbank, versuche es später nocheinmal, oder kontaktiere einen Administrator.' );
mysql_select_db($Datenbank);

#----------------------------------------------------------

#hier wird die Tabelle 'Benutzer' angefragt
$result = @ mysql_query("SELECT Benutzername, Passwort FROM Benutzer WHERE (Benutzername = '$Name') AND (Passwort = '$Kennwort')")
or die(
mysql_error());

if (
mysql_num_rows ($result) > 0)

  
$data mysql_fetch_array ($result) or die(mysql_error());
# nun werden Sessionvariablen erstellen und registrieren 
  
$_SESSION["Benutzername"] = $data["Benutzername"]; 
  
$_SESSION["Passwort"] = $data["Passwort"]; 
  
$_SESSION["ID"] = $data["ID"]; 
echo 
'Login erfolgreich!';
echo 
$_SESSION["Benutzername"];
echo 
$_SESSION["Passwort"];
echo 
$_SESSION["ID"];
}
else
{
die (
'Es gab einen Fehler beim Login.');
}
?>
Leider sagt er mir 'Es gab einen Fehler beim Login.', egal was ich eingebe. (Es gibt einen Testaccount in der datenbank)

mfg,
Kentai

Geändert von Kentai (23.02.2009 um 21:39:18 Uhr)
Mit Zitat antworten
  #5  
Alt 23.02.2009, 21:20:24
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: MySQL probleme mit PHP

Wo kommen $Name und $Kennwort her?
Wieso sehe ich immer noch kein error_reporting?

Zitat:
SELECT Benutzername ,Passwort FROM ....
Wozu fragst du das Passwort ab?
Wo soll $data["ID"] herkommen?

Auch vermisse ich mysql_error() und von einer "SQL Injection" Abhandlung ist auch nix zu sehen.

Geändert von DokuLeseHemmung (23.02.2009 um 21:22:00 Uhr)
Mit Zitat antworten
  #6  
Alt 23.02.2009, 21:37:45
Kentai Kentai ist offline
Anfänger
 
Registriert seit: Feb 2009
Alter: 32
Beiträge: 27
AW: MySQL probleme mit PHP

Wie im ersten Post ersichtlich, wo auch das obere Codesegment, das ich nicht geändert habe steht, Sind $Name und $Kennwort.
Die sache mit der 'ID' habe ich noch nicht implementiert, die brauche ich später noch.

ich frage außerdem beide gleichzeitig ab um sicherzugehen, dass Passwort und Benutzername übereinstimmen. (Hoffentlich richtig so)

ich habe eben mal den errorcheck eingebaut, der zeigt aber nichts an.

um sicherheit kümmere ich mich, sobald das ganze überhaupt funktioniert^^

mfg,
Kentai

PS: ich füge in den letzten Post nochmal den ganzen code ein.

Geändert von Kentai (23.02.2009 um 21:38:41 Uhr)
Mit Zitat antworten
  #7  
Alt 23.02.2009, 22:01:19
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: MySQL probleme mit PHP

So, die schlimmsten Böcke habe ich mal rausgenommen:
PHP-Code:
<?php
error_reporting
(E_ALL E_STRICT);
ini_set('display_errors'TRUE);

session_start();
/* Überflüssig und gefährlich!! 
$_SESSION['Name'] = $_GET[Benutzername];
$_SESSION['Kennwort'] = $_GET[Kennwort];
*/

$db_server 'localhost';
$Benutzer 'root';
$Datenbank 'nn_legends';
$db_passwort '';

#hier baut der Server eine Verbindung mit der Datenbank auf

$db mysql_connect($db_server,$Benutzer,$Benutzerkennwort)
            or die(
'Leider aber gibt es ein Problem mit der Datenbank, versuche es später nocheinmal, oder kontaktiere einen Administrator.' );
mysql_select_db($Datenbank) or die(mysql_error());

#----------------------------------------------------------
// Und du solltest besser kein GET nehmen
$Name     mysql_real_escape_string($_GET[Benutzername]);
$Kennwort mysql_real_escape_string($_GET[Kennwort]);

#hier wird die Tabelle 'Benutzer' angefragt
$sql "  SELECT ID, Benutzername
            FROM Benutzer
            WHERE  (Benutzername = '$Name') AND
                   (Passwort = '$Kennwort')"
;

$result mysql_query($sql) or die(mysql_error());

if (
mysql_num_rows ($result) === 1)
{
  
$data mysql_fetch_array ($result) or die(mysql_error());
  
# nun werden Sessionvariablen erstellen und registrieren
  
$_SESSION["Benutzername"] = $data["Benutzername"];
  
$_SESSION["ID"] = $data["ID"];
  echo 
'Login erfolgreich!';
  echo 
$_SESSION["Benutzername"];
  echo 
$_SESSION["ID"];
}else
{
  die (
'Es gab einen Fehler beim Login.');
}
Aber ein paar kleinere sind noch drin.

Geändert von DokuLeseHemmung (23.02.2009 um 22:02:16 Uhr)
Mit Zitat antworten
  #8  
Alt 23.02.2009, 23:53:42
Kentai Kentai ist offline
Anfänger
 
Registriert seit: Feb 2009
Alter: 32
Beiträge: 27
AW: MySQL probleme mit PHP

Puh, ne Weile hat es noch gedauert, aber dann habe ich es doch noch zum laufen gebracht^^

vielen, vielen dank. Für den Heutigen Abend bist du mein Held =3

Ich nehme an es macht von der Sicherheit keinen unterschied, ob ich die Variablen via GET, POST, oder REQUEST einhole? Oder ist GET die unsicherste davon? Ich meine imprinzip machen sie doch alle das selbe, haben nur verschiedene Aufnahmebereiche.

Nun, zumindest habe ich nun meine Registrierungsseite und meine Loginseite und den Code aus dem beide bestehen zu ca. 90% Verstanden. Dass ist genug um mir auch den Rest zu erarbeiten, da ich so ziemlich alles was ich zum weiteren Arbeiten mit MySQL brauche habe.

also noch einmal vielen Dank.
Wenn ich wieder auf ein schwerwiegendes Problem stoße, auf dessen Lösung ich nicht alleine komme, melde ich mich^^
vielleicht so in 5-10 Minuten xD *scherz*

mfg,
Kentai

PS: Nocheinmal vielen Dank und dieser eine Request hat mir eine hohe Meinung von der Communety verschaft. Wenn mein PHP wieder (um einiges) besser ist, werde ich zusehen, dass ich auch fleißig mithelfe.
Mit Zitat antworten
  #9  
Alt 24.02.2009, 00:01:43
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: MySQL probleme mit PHP

Naja, wenn ich dir mehrfach mit "unsicher" komme, dann erwarte ich keinesfalls danach noch sowas:
Zitat:
Ich nehme an es macht von der Sicherheit keinen unterschied, ob ich die Variablen via GET, POST, oder REQUEST einhole? Oder ist GET die unsicherste davon?
Falsch! Es macht sehr wohl einen Unterschied!

Get Variablen stehen in der Adressleiste, das führt dazu, dann sie in allen möglichen Logdateien landen. Das jeder, der sich an den Browser setzt, sich über die History einloggen kann. Willst du das wirklich? Ja?
;-) Dann gehörst du auf die Streckbank! ;-)
Mit Zitat antworten
  #10  
Alt 24.02.2009, 00:25:02
Kentai Kentai ist offline
Anfänger
 
Registriert seit: Feb 2009
Alter: 32
Beiträge: 27
AW: MySQL probleme mit PHP

Sehr schön, ich habe es nämlich auf REQUEST geändert, vorallem weil ich dachte dass es mehr kann xD^^
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme mit PHP und mySQL, Select xy as yz funktioniert nicht KickMuck MySQLi/PDO/(MySQL) 1 04.03.2006 12:24:31
anmeldung von usern mit php und mysql general_xxx PHP Grundlagen 2 02.03.2006 18:19:05
mySQL DB erstellen und unter PHP nutzen norial MySQLi/PDO/(MySQL) 1 25.10.2004 11:01:29
Timestamp von PHP und MySQL BlindCrazyBoy PHP für Fortgeschrittene und Experten 8 16.02.2003 00:37:08
PHP mail() funktion und server probleme flobee PHP für Fortgeschrittene und Experten 0 03.07.2002 01:18:27


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:38:10 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt