Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Frage Entwicklung PHP

Mitglied: Goldencreeper

Goldencreeper (Level 1) - Jetzt verbinden

23.03.2014, aktualisiert 24.03.2014, 3312 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(2)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
Windows 10 und Windows SSB 2008 - Login Script greift nicht (21)

Frage von heisenberg4 zum Thema Windows Server ...

PHP
PHP MySQL Login (7)

Frage von Yanmai zum Thema PHP ...

PHP
MySQL-Abfrage mit php: Wert + true bzw. false (2)

Frage von tomolpi zum Thema PHP ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...