Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst MYSQL und PHP Login Script

Mitglied: Goldencreeper

Goldencreeper (Level 1) - Jetzt verbinden

23.03.2014, aktualisiert 24.03.2014, 3486 Aufrufe, 17 Kommentare, 8 Danke

Hallo liebe Administrator Community.
Ich habe Arbeite grade an einer Status Seite für einen Hoster.
Die Seite ist auch schon Online und funktioniert auch.
Aber das Aktualisieren der Server bzw hinzufügen und löschen erfolgt immer noch per Hand via Editor.
Nun möchte ich ein CMS dafür schreiben.
Da ich nicht der beste in PHP bin habe ich im Internet nach einem Login script gesucht.
Ich bin auch fündig geworden.
Login und alles andere geht.
Es gibt nur ein Problem.
Wenn man http://deinedomain.tld/Login eingibt geht alles.
Wenn man aber den Admin Pfad kennt (http://deinedomain.tld/Admin) wird man nicht aufgefordert sich anzumelden.
Sondern bekommt zugriff.
Von daher ist es egal ob man eingelogt ist oder nicht.
Hier mal alles Quellcodes:

Login.php
01.
<?php 
02.
 
03.
  session_start(); 
04.
 
05.
  include "DB.php"
06.
 
07.
  if (isset($_SESSION['angemeldet']) || $_SESSION['angemeldet']) { 
08.
    header('Location: http://http://deinedomain.tld/Admin'); 
09.
    exit
10.
11.
 
12.
  else if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
13.
 
14.
    $username = $_POST['username']; 
15.
    $passwort = $_POST['passwort']; 
16.
 
17.
    $sql = mysql_query("SELECT $mysqlname FROM $mysqltable WHERE $mysqlname='$username' AND $mysqlpwd='$passwort'"); 
18.
    $num = mysql_num_rows($sql); 
19.
 
20.
    if ($num != 0) { 
21.
      $_SESSION['angemeldet'] = true; 
22.
 
23.
      if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') { 
24.
        if (php_sapi_name() == 'cgi') { 
25.
          header('Status: 303 See Other'); 
26.
27.
        else
28.
          header('HTTP/1.1 303 See Other'); 
29.
30.
31.
 
32.
      header('Location: http://deinedomain.tld/Admin'); 
33.
      exit
34.
35.
    else
36.
      echo "<p><b>Falsche Login-Daten.</b></p>"
37.
38.
39.
?> 
40.
    <form action="index.php" method="post"
41.
      <table border="0"
42.
        <tr> 
43.
          <td>Username:</td> 
44.
          <td><input type="text" name="username" /></td> 
45.
        </tr> 
46.
        <tr> 
47.
          <td>Passwort:</td> 
48.
          <td><input type="password" name="passwort" /></td> 
49.
        </tr> 
50.
        <tr> 
51.
          <td> </td> 
52.
          <td><input type="submit" value="Einloggen" /></td> 
53.
        </tr> 
54.
      </table> 
55.
    </form>
DB.php
01.
<?php 
02.
 
03.
   $mysqlhost="localhost"
04.
   $mysqluser="username"
05.
   $mysqlpasswd="passwort"
06.
   $mysqldbname="datenbankname"
07.
   $mysqltable="user"
08.
   $mysqlpwd="pw"
09.
   $mysqlname="name"
10.
 
11.
   $link = @mysql_pconnect($mysqlhost, $mysqluser, $mysqlpasswd); 
12.
   if ($link == FALSE) { 
13.
     echo "<p><b>Leider kann keine Verbindung zur Datenbank hergestellt werden."
14.
     echo "Bitte versuchen Sie es später noch einmal.</b></p>"
15.
     exit(); 
16.
17.
   mysql_select_db($mysqldbname); 
18.
 
19.
?>
Auth.php
01.
<?php 
02.
 
03.
  session_start(); 
04.
 
05.
  if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) { 
06.
    header('Location: http://deinedomain.tld/Login'); 
07.
    exit
08.
09.
 
10.
?>
Admin.php
01.
<?php   include "http://deinedomain.tld/Login/Auth.php";   ?> 
02.
   <p>Willkommen im neuen Admin-Bereich dieser Homepage!!</p> 
03.
   <p> <p> 
04.
   <p>Viel Spaß noch!</p> 
05.
   <form action="http://deinedomain.tld/Login/Logout.php" method="post"
06.
   <input type="submit" value="Ausloggen" /> 
07.
   </form>
Logout.php
01.
<?php 
02.
 
03.
     session_start(); 
04.
     session_destroy(); 
05.
 
06.
     header('Location: http://deinedomain.tld/Login'); 
07.
 
08.
?>
Quelle des Scriptes:
http://www.der-webdesigner.net/tutorials/php/74-silentstormer_login

Würde mich über Hilfe freuen.

Grüße Goldencreeper
Mitglied: colinardo
LÖSUNG 23.03.2014, aktualisiert 24.03.2014
Moin,
schreib den include Pfad in der Admin.php mal so:
<?php 
   include "/Login/Auth.php";   
?> 
Grüße Uwe
Bitte warten ..
Mitglied: Goldencreeper
23.03.2014 um 19:41 Uhr
Habe mal alle Pfade bearbeitet sodas http:// weg ist.
Jedoch funktioniert es nicht.
Ich kann dir einen Demo ACC zuschicken wenn du willst.

Grüße Goldencreeper
Bitte warten ..
Mitglied: Jannis92
LÖSUNG 23.03.2014, aktualisiert 24.03.2014
Hey,
normalerweise sieht die Syntax für den include Befehl wie folgt aus:
include('Pfad'); <<-- könntest das Ganze noch einmal mit den Klammern ausprobieren.
oder:
include('Auth.php');

Dennoch hätte ich persönlich die Admin.php anders aufgebaut (vllt. noch eine Idee, falls es mit den Klammern nicht funktioniert:

Admin.php
<?php
session_start();
IF($_SESSION['angemeldet'] == true)
{
Hier nun der Quelltext für den Admin
}
else
{
include('Login.php');
}
Bitte warten ..
Mitglied: colinardo
LÖSUNG 23.03.2014, aktualisiert 24.03.2014
kann es gerade nicht testen, aber vermutlich werden die Session-Variablen nicht richtig gelöscht, probier es mal mit dieser Variante der Logout.php welche die Variablen zurücksetzt und eventuelle Cookies löscht.
Logout.php
01.
<?php 
02.
session_start(); 
03.
$_SESSION = array(); 
04.
if(isset($_COOKIE[session_name()])){ 
05.
  setcookie(session_name(),'', time()-48000,'/'); 
06.
07.
session_destroy(); 
08.
 
09.
header('Location: http://deinedomain.tld/Login');  
10.
?>
Bitte warten ..
Mitglied: Goldencreeper
23.03.2014 um 21:37 Uhr
Tut mir leid.
Aber beide Ideen bringen nix.
Habe alle beide ausprobiert aber konnte immer wieder auf die Admin.php zugreiffen.

Grüße Goldencreeper
Bitte warten ..
Mitglied: Jannis92
LÖSUNG 23.03.2014, aktualisiert 24.03.2014
Lässt du dir php Fehler anzeigen?


EDIT:
so, habe nun zwei Varianten für dich:

1. Variante | Admin.php
<?php
session_start();
include '../Auth.php';
if(auth()==false)
{
echo "Nicht angemeldet";
}
else
{
echo '
<p>Willkommen im neuen Admin-Bereich dieser Homepage!!</p>
<p> <p>
<p>Viel Spaß noch!</p>
<form action="http://deinedomain.tld/Login/Logout.php" method="post">
<input type="submit" value="Ausloggen" />
</form>
';
}
?>


2. Variante | Admin.php
<?php
session_start();

IF($_SESSION['angemeldet'] == true)
{
echo '
<p>Willkommen im neuen Admin-Bereich dieser Homepage!!</p>
<p> <p>
<p>Viel Spaß noch!</p>
<form action="http://deinedomain.tld/Login/Logout.php" method="post">
<input type="submit" value="Ausloggen" />
</form>
';
}
else
{
include('http://deinedomain.tld/Login/login.php'");
}
?>

FÜR Variante 1 muss die Auth.php wie folgt angepasst werden:

<?php
session_start();

function auth()
{
if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
header('Location: http://deinedomain.tld/Login/login.php';);
return false; Wenn keine Sitzung existiert, gebe False zurück
}
else
{
return true;
Wenn eine Sitzung exisitiert, gebe true zurück.
}
}

?>

Wie gesagt, bei mir haben beie Varianten funktioniert.
Mit dem ursprünglichen Quelltext mit dem "Exit" hat bei mir auch nicht funktioniert, was eigentlich auch logisch ist,
da der Interpreter den PHP Code "interpretiert, bei exit, stoppt und anschließend den restlichen HTML Text ausgibt.

Ich hoffe die alternative ist für die akzeptabel :p
Bitte warten ..
Mitglied: colinardo
LÖSUNG 24.03.2014, aktualisiert um 22:28 Uhr
Zitat von Goldencreeper:

Tut mir leid.
Aber beide Ideen bringen nix.
Habe alle beide ausprobiert aber konnte immer wieder auf die Admin.php zugreiffen.
Tut mir auch leid, aber hier geht's so einwandfrei, auch wenn es keine wasserdichte Lösung ist ... du hast in der Zeile 40 der login.php noch einen Fehler:
01.
<form action="index.php" method="post"> 
hier sollte "login.php" als action drin stehen ...

@Jannis92
Mit dem ursprünglichen Quelltext mit dem "Exit" hat bei mir auch nicht funktioniert, was eigentlich auch logisch ist, da der Interpreter den PHP Code "interpretiert, bei exit, stoppt und anschließend den restlichen HTML Text ausgibt.
aber nicht wenn vor dem exit der Header auf eine andere Location gesetzt wird, dann wird die Seite gar nicht erst angezeigt, sondern direkt umgeleitet.

Grüße Uwe
Bitte warten ..
Mitglied: Goldencreeper
24.03.2014 um 16:54 Uhr
Die Lösungen sind zwar akzeptabel jedoch funktionieren die auch nicht.
Ich weiss nicht wiso.
Entweder liegt der Fehler wo anders oder ich weiss nicht weiter.
Fehler werden auch keine ausgeworfen die Admin.php war vollkommen weiß
Also ne leere seite.

Grüße Goldencreeper
Bitte warten ..
Mitglied: Jannis92
LÖSUNG 24.03.2014, aktualisiert um 22:28 Uhr
Du, ohne Witz...
ich habe den Quelltext bei mir ausprobiert und es hat funktioniert.

Was steht denn in deiner php.ini ?!
Ist hier überhaupt eingestellt, dass Fehlermeldungen ausgegeben werden sollen?

Ich weiß jetzt nicht, wie weit deine PHP- Kenntnisse reichen, daher die Frage ;).


Suche sonst in der php.ini einmal nach "error_reporting".
Hier sollte "E_ALL" eingestellt sein.

Zusätzlich noch einmal die einstellunge für "display_errors" überprüfen.
Sollte auf "On" gestellt sein.

Alternativ dazu einmal die php.ini posten oder so.
Wie gesagt, ich habe den Quelltext, den ich dir hochgeladen habe, ausprobiert.
Bin ich in das Admin Verzeichnis gegangen, und habe die admin.php geöffnet, anschließend wurde ich zur Login.php geleitet.

Beste Grüße & viel Erfolg :p
Bitte warten ..
Mitglied: Goldencreeper
24.03.2014, aktualisiert um 21:47 Uhr
Sry habe nicht gesehen das die einstellungen aus sind.
Also der Fehler liegt in der Auth.php:
Parse error: syntax error, unexpected ';' in /var/www/web2/htdocs/Login/Auth.php on line 7
das wäre dieser bereich:
header('Location: http://deinedomain.tld/Login/index.php';;);

Jedoch ist da alles richtig eingestellt.

Grüße Goldencreeper
Bitte warten ..
Mitglied: colinardo
LÖSUNG 24.03.2014, aktualisiert um 22:28 Uhr
Zitat von Goldencreeper:

Sry habe nicht gesehen das die einstellungen aus sind.
Also der Fehler liegt in der Auth.php:
Parse error: syntax error, unexpected ';' in /var/www/web2/htdocs/Login/Auth.php on line 7
das wäre dieser bereich:
header('Location: http://deinedomain.tld/Login/index.php';;);

Jedoch ist da alles richtig eingestellt.
ähm, eben nicht !!! wie die Fehlermeldung schon sagt hast du ein bzw. zwei Semikolon zu viel !
so gehört das...
01.
header('Location: http://deinedomain.tld/Login/index.php');
Bitte warten ..
Mitglied: Jannis92
LÖSUNG 24.03.2014, aktualisiert um 22:28 Uhr
Jips,
colinardo hat recht.

Wenn du meinen Quelltext von oben kopiert hast, dann tut es mir leid.
Da hat sich wohl ausversehen ein Fehler eingeschlichen.

header('Location: http://deinedomain.tld/Login/login.php';;);
nach .php' darf das Semikolon nicht sein.
Bitte warten ..
Mitglied: Goldencreeper
24.03.2014, aktualisiert um 22:37 Uhr
Zitat von colinardo:

> Zitat von Goldencreeper:
>
> Tut mir leid.
> Aber beide Ideen bringen nix.
> Habe alle beide ausprobiert aber konnte immer wieder auf die Admin.php zugreiffen.
Tut mir auch leid, aber hier geht's so einwandfrei, auch wenn es keine wasserdichte Lösung ist ... du hast in der Zeile
40 der login.php noch einen Fehler:
01.
> <form action="index.php" method="post">  
02.
> 
hier sollte "login.php" als action drin stehen ...

@Jannis92
> Mit dem ursprünglichen Quelltext mit dem "Exit" hat bei mir auch nicht funktioniert, was eigentlich auch
logisch ist, da der Interpreter den PHP Code "interpretiert, bei exit, stoppt und anschließend den restlichen HTML Text
ausgibt.
aber nicht wenn vor dem exit der Header auf eine andere Location gesetzt wird, dann wird die Seite gar nicht erst angezeigt,
sondern direkt umgeleitet.

Grüße Uwe

@colinardo: Die datei login.php gibts eig. garnicht sie ist in der index.php vondaher ist der Pfad richtig. Auch die Admin.php ist ein eigenes verzeichnis mit einer php Datei. Dabei ist das eh alles ein test um das Script zum laufen zu brigen werde die Struktur eh noch ändern.

So die beiden ;; habe ich weggemacht.
Ich ich muss euch vielmals danken.
Wenn man das Admin verzeichnis aufruft wird man zur Login seite geleitet.
Aber es gibt einen neuen Fehler:
Notice: Undefined index: angemeldet in /var/www/web2/htdocs/Login/index.php on line 7

Ist dieser bereich.
if (isset($_SESSION['angemeldet']) || $_SESSION['angemeldet']) {

liegt das jetz daran das eine Definition in der Auth.php geändert wurde?

Grüße Goldencreeper


//EDIT: Und wenn man eingeloggt ist kommt dieser Fehler:
Notice: A session had already been started - ignoring session_start() in /var/www/web2/htdocs/Login/Auth.php on line 2

Dieser Bereich:
session_start();
Bitte warten ..
Mitglied: Jannis92
24.03.2014 um 22:43 Uhr
Hallo Goldencreeper,
das ist schön zu hören....

Der "Fehler" wird ausgegeben, da die Session "angemeldet" noch nicht existiert. Du setzt Sie ja erst auf true, wenn
die Anmeldung erfolgreich war.
Würde sagen, dass du die Meldung fürs Erste ignorieren kannst.

Geht das Ganze ins produktive über, so werden die php Meldungen, die du gerade eingeschaltet hast,
eh ausgeschaltet.
Bitte warten ..
Mitglied: Goldencreeper
24.03.2014 um 22:55 Uhr
Ok und warum wird die jetz genau ausgelöst?
Ich meine es sieht nicht grade schön aus und dazu ist sie blöd zu sehen.
Denn wenn es andere PHP fehler gibt denkt man das das dazu gehört.

Grüße Goldencreeper
Bitte warten ..
Mitglied: colinardo
LÖSUNG 25.03.2014, aktualisiert 26.03.2014
Wenn du die Fehlerausgabe einschaltest erscheinen dort auch Warnings / Notices die aber die Funktionsweise nicht beeinträchtigen, und die wenn die Fehlerausgabe für den Produktivbetrieb wieder ausgeschaltet wird, auch nicht mehr erscheinen.
Wenn du diese Notice:
Notice: Undefined index: angemeldet in /var/www/web2/htdocs/Login/index.php on line 7
noch unbedingt loswerden möchtest musst du die Login-Seite am Anfang noch so umschreiben:
01.
<?php 
02.
  session_start(); 
03.
  include "DB.php"; 
04.
 
05.
  if (isset($_SESSION['angemeldet'])) { 
06.
    if ($_SESSION['angemeldet']){ 
07.
       header('Location: http://http://deinedomain.tld/Admin'); 
08.
       exit; 
09.
10.
11.
..... 
12.
... 
13.
..
(Hinweis für Dummies: Die Punkte zum Schluss gehören natürlich nicht dazu ...., nur das nachher nicht wieder Beschwerden kommen das das alles doch gar nicht funktioniert ...)

Damit sollte das Thema hier gegessen sein ...
Ansonsten: http://www.php-einfach.de/

Grüße Uwe
Bitte warten ..
Mitglied: Goldencreeper
26.03.2014 um 17:38 Uhr
Ok vielen Dank geht alles.
Jetz kann ich endlich das ACP bearbeiten.

Grüße Goldencreeper
Bitte warten ..
Ähnliche Inhalte
PHP
PHP MySQL Login
Frage von YanmaiPHP7 Kommentare

Hallo ihr Administratoren, ich habe eine Datenbank, in der alle User des Netzwerkes enthalten sind. Wenn ein User sich ...

Datenbanken
Login Probleme in mysql Datenbank
gelöst Frage von bigbootykillaDatenbanken2 Kommentare

Hi, ich habe hier eine Datenbank auf einer Ubuntu Kiste. Wenn ich mich versuche mit Code: einzuloggen bekomme ich ...

PHP
PHP Umstellung mysql connect
Frage von DPiegzaPHP7 Kommentare

Hallo zusammen. Ich bekomme immer diese Fehlermeldung / Warnung: Deprecated: mysql_connect(): The mysql extension is deprecated and will be ...

PHP
PHP LDAP Login
gelöst Frage von schneerunzelPHP11 Kommentare

Hallo Zusammen, ich brauche eine Website auf der man sich mit seinen LDAP Account anmelden kann und dann eine ...

Neue Wissensbeiträge
iOS
IOS 11.2.6 verfügbar
Information von sabines vor 4 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 18 StundenSicherheit2 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 TagErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server38 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless19 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Server-Hardware
Server für Exchange 2016, Kaufberatung
Frage von MazenauerServer-Hardware15 Kommentare

Guten Tag werte Gemeinde, Vorab: Ich dachte es gab mal einen separaten Bereich für solche Anfragen, habe ich leider ...