PHP Login

Ich bräuchte einen login für PHP, die Suche hat nix ergeben.
 
Also ich würd sagen am einfachsten kannstes machen mit

z.B.

if($password=="p4ss")
{
echo "blub";
}

kannst dann halt mir POST und GET machen oder mit ner session.

Das währe so das einfachste.


Meintest du das so?
 
Hab gemerkt, dass es die falsche Sektion war, sry :D

@ Bloody2k: ich meinte es eigentlich so, dass es automatisch (wenn jemand ein formular ausfüllt) den User hinzufügt! Ich glaub, man muss es z.B.: mit SQLite machen, hab aba keien Ahnung davon.

PS: Ich suche auch noch einen C++ COmpiler, der nicht über Dos funktioniert, sondern eheer so wie z.B. Delphi von Borland! (oder auch Microsoft Visual Basic 6.0)
 
Wenn du noch eine Lösung braüchtest...

<form method="post" action="script.php">
Felder
</form>

###script.php####

<?php
$user=$_POST['user'];
...;

if (empty($user)or empty(...)){

INSERT usw.

}
else...


####weiterleitung mit user wnn ok#######

?>
<a href="\userin.php?user=<?=$user?>&code=<?
$code=md5($_SERVER['REMOTE_ADR(oder so)]);
echo $code;
?>">Link</a>



das ganze kannst du noch mit Stunde,Session(), etc erweitern
 
hm.. das sieht ja sehr schön aus und ist auch verständlich. nur eine frage. wenn ich eine seite machen möchte wo sich ein selbstprogrammiertes forum mit dem login vernetzt. wie funktioniert sowas ?
 
Ich denke mal du meinst das wenn die Seite nur angezeigt wird wenn man eingeloggt ist...also am einfachsten ist das denk ich mal mit der Session.

Code:
<?
session_start();

$name = "name"
$password = "pass"


session_register('name');
session_register('password');
?>


Wenn du nun z.B. auf die nächste Seite weiterleitest und ganz oben an das script wieder "session_start()" schreibst stehen dir wieder die Variablen $name und $password zur verfügung.
Damit kannst dann z.B. in ner SQL Datenbank suchen lassen ob die Werte stimmen.

Mit session_destroy() werden dann die Werte wieder gelöscht.


MFG
 
Also ich erklärs genau ein mal aber dafür auch ausführlich und mit rechte vergabe. So....

Das iss das Formular mit dem man sich anmelden kann. Iss nen wenig Unsauber weil html und php gemischt ist. Das mag ich eigentlich nicht so iss aber in dem Fall nicht so schlimm ich bitte drum das eigentlich zu ändern.
formular.php
PHP:
//hier wird die Session gestartet damit man die Variable $_SESSION['bla'] benutzen kann
<?php session_start (); ?>
<html>
<head>
  <title>Login</title>
</head>

<body>
<?php
//$_REQUEST bitte in php.net nachlesen würde zu lange dauern
if (isset ($_REQUEST["fehler"]))
{
  echo "<font size=\"2\">Die Zugangsdaten waren ungültig</font>";
}
?>
<form action="login.php" method="post">
  Name: <input type="text" name="name" size="20"><br>
  Kennwort: <input type="password" name="pwd" size="20"><br>
  <input type="submit" value="Login">
</form>
</body>
</html>

hier passiert eigentlich alles
login.php
PHP:
<?php
// Session starten
session_start ();

// Error_reporting(E_ALL) alle Fehler werden angezeigt
error_reporting(E_ALL);

//in der config.php steht der include zu den Datenbank Constanten
include "inc/config.php";


// Datenbankverbindung aufbauen
$connectionid = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());

mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

//Den Benutzerraussuchen dessen Nickname mit dem Passwort
//übereinstimmt. Verzwickt wegen Md5 verschlüsselung
$sql = "SELECT ".
    "Id, Nickname, Nachname, Vorname ".
  "FROM ".
    "benutzerdaten ".
  "WHERE ".
    "(Nickname like '".$_REQUEST["name"]."') AND ".
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')";

//Ergebnis vom query in $result schreiben
$result = mysql_query ($sql);


/wenn es mehr als 0 rows gibt dann startet er 
if (mysql_num_rows ($result) > 0)
{
  // Benutzerdaten in ein Array auslesen.
  $row = mysql_fetch_array ($result);

  // Sessionvariablen erstellen und registrieren
  $_SESSION["user_id"] = $row["Id"];
  $_SESSION["user_nickname"] = $row["Nickname"];
  $_SESSION["user_nachname"] = $row["Nachname"];
  $_SESSION["user_vorname"] = $row["Vorname"];

  //hier frage ich nach den Rechten an der Stelle wo
  //Nickname aus der Datenbank und $_SESSION['user_nickname']
  //uebereinstimmen
  $sql="SELECT
         Rechte
        FROM
         nutzerrechte
        WHERE
         Nickname = '".$_SESSION['user_nickname']."';";

  $result = mysql_query($sql) OR die(mysql_error());

//hier speichern wir in $row die ich sags mal so die "Reihen der Datenbank"
  $row = mysql_fetch_assoc($result);

    //hier schaut er ob in $row['Rechte'] auch Adminsteht
    if($row['Rechte'] == "Admin")
    {
    //wenn ja dann bitte schön ab ins adminmenu
    header ("Location: adminmenu.php");
    exit();
    }
 } else {
  header ("Location: formular.php?fehler=1");
  exit();
}
    //wenn nicht Admin drin steht dann ab ins usermenu.php
    header ("Location: usermenu.php");
    exit();
?>

ja ne iss klar
logut.php
PHP:
<?php
// Wird ausgeführt um mit der Ausgabe des Headers zu warten.
ob_start ();

//session start löschen beenden
session_start ();
session_unset ();
session_destroy ();

header ("Location: formular.php");
//bitte in php.net nachlesen
ob_end_flush ();
?>

hier kann man einen Nutzer anlegen
registrieren.php
PHP:
<?php

//Antwort auf usereinfügen.php wenn der Fehler1 uebergeben wird
//d.h. die passwörter sind nicht identisch

if (isset ($_REQUEST["fehler"]))
{
  echo "<font size=\"2\">Passwörter nicht identisch</font>";
}


//Sendet an die Datei usereinfuegen.php
echo"<form action=\"usereinfuegen.php\" method=\"POST\">\n";

//Hier kommen die Eingabe Felder fürs registrieren hin

echo" Nickname: <input type=\"text\" name=\"Nickname\">\n<br>";
echo" Kennwort: <input type=\"password\" name=\"Kennwort\">\n<br>";
//Kennwort2 fuer spaetere ueberprufung ob das Kennwort richtig geschrieben ist
echo" wiederholen: <input type=\"password\" name=\"Kennwort2\">\n<br>";
echo" Nachname: <input type=\"text\" name=\"Nachname\">\n<br>";
echo" Vorname: <input type=\"text\" name=\"Vorname\">\n<br>";

echo"<input type=\"submit\" name=\"submit\" value= \"registrieren\">\n";
echo"</form>\n";
?>

//hier kommt der Admin rein.
adminmenu.php
PHP:
<?php
//bei checkuser wird uberprüft ob der User aus einer Aktuellen Session kommt
  include ("inc/checkuser.php");
  include ("inc/config.php");

@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());

mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());


  echo "SIE SIND IM ADMIN BEREICH!!!\n<br>";
//wir lassen uns mal unsere Id,nicknamen, nachnamen und vornamen anzeigen
  echo "BenutzerId:".$_SESSION['user_id']."\n<br>";
  echo "Nickname: ".$_SESSION['user_nickname']."\n<br>";
  echo"Nachname:".$_SESSION['user_nachname']."\n<br>";
  echo "Vorname: ".$_SESSION['user_vorname']."\n<br>";


  echo" <a href=\"useradmin.php\">Benutzer verwalten</a>\n";
  echo"<a href=\"logout.php\">Ausloggen</a>\n";

?>

//hier wird der user halt eingefuegt in die DB
usereinfuegen.php
PHP:
<?php

// Error_reporting(E_ALL) alle Fehler werden angezeigt
error_reporting(E_ALL);

// Einbinden der config.php in der ist die constant.php eingebunden
// und in der stehen die zugangsdaten für die Datenban
include "inc/config.php";


//Wenn in das EditFeld Kennwort in registrieren.php nicht das gleiche
//angegeben wurde dann übergibt er einen Fehler und spring auf die Seite
//registrieren.php dort wird auch ein Fehler ausgegeben
if($_POST['Kennwort'] != $_POST['Kennwort2'])
{

header ("Location: registrieren.php?fehler=1");

} else {

  // Definition der Benutzer vom Registrieren.php
    $Nickname = $_POST['Nickname'];
    $Kennwort = $_POST['Kennwort'];
    $Nachname = $_POST['Nachname'];
    $Vorname = $_POST['Vorname'];

// Aufbau der Datenbankverbindung

    $connectionid = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());

// Datenbankverbindung aufbauen
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

// SQL-Anweisung erstellen wichtig iss bei Kennwort das md5 das ist eine 
//Verschlüsselung 
    $sql = "INSERT INTO ".
              "benutzerdaten (Nickname, Kennwort, Nachname, Vorname) ".
           "VALUES ('".$Nickname."', '".md5 ($Kennwort)."','".$Nachname."', '".$Vorname."')";

//wenn connectionid >0 ausgabe ob Benutzer angelegt wurde oder nicht
    mysql_query ($sql);

    if (mysql_affected_rows ($connectionid) > 0)
    {
      echo "Benutzer erfolgreich angelegt.<br>\n";
    }
    else
    {
     echo "Fehler beim Anlegen der Benutzer.<br>\n";
    }
}
?>

//hier kommen die user automatisch rein
usermenu.php
PHP:
<?php
include ("inc/checkuser.php");
?>
<html>
<head>
  <title>Interne Seite</title>
</head>
<body>

// MEINE AUSGABE
  BenutzerId: <?php echo $_SESSION["user_id"]; ?><br>
  Nickname: <?php echo $_SESSION["user_nickname"]; ?><br>
  Nachname: <?php echo $_SESSION["user_nachname"]; ?><br>
  Vorname: <?php echo $_SESSION["user_vorname"]; ?>
  <hr>
  <a href="testseite.php">test</a>
  <a href="logout.php">Ausloggen</a>
</body>
</html>

Also hier hab ich mal nen kleines Login Tool geschrieben das ganze basierte mal auf einem Tutorial ich hab das dann weiter entwickelt weil ich es echt gut fand. Achja klar die inc dateien

alle dateien die im inc ordner sind

admincon.php
PHP:
<?php
$mysql_host='localhost';
$mysql_user='whiskez';
$mysql_pass='passwort';
$mysql_database='test';
?>

//hier wird geschaut ob der User ein Admin ist
checkadmin.php
PHP:
<?php
session_start ();
if (!isset ($_SESSION["user_id"]))
{
  header ("Location: formular.php");
}

error_reporting(E_ALL);

//das iss nen wenig doof gelöst kann man noch viel besser machen aber wenn ich auf 
//die Konstanten wieder zugreife dann meckert er an sich auch nicht so wichtig
//hab ich halt 2mal das gleiche geschrieben. Ich weiss geht besser reicht mir aber
include("admincon.php");

@mysql_connect($mysql_host, $mysql_user, $mysql_pass) OR die(mysql_error());

mysql_select_db($mysql_database) OR die(mysql_error());

//hier die Rechte per SQL herholen
   $sql="SELECT
         Rechte
        FROM
         `nutzerrechte`
        WHERE
         Nickname = '".$_SESSION['user_nickname']."';";

  $result = mysql_query($sql) OR die(mysql_error());

  $row = mysql_fetch_assoc($result);

//wenn in $row['Rechte' ] nicht "Admin" steht dann zurueck ins Eingabeformular
    if($row['Rechte'] != "Admin")
    {
    header ("Location: formular.php");
    exit();
    }

?>

Der Name ist Programm
checkuser.php
PHP:
<?php
session_start ();
//wenn die $_SESSION['user_id'] nicht gesetzt ist also nie eine Session gestartet
//wurden dann zurueck zum Eingabe Formular
if (!isset ($_SESSION["user_id"]))
{
  header ("Location: formular.php");
}
?>


Konstanten für die DB sind hier definiert
constant.php
PHP:
<?php
    define('MYSQL_HOST', 'localhost');
    define('MYSQL_USER', 'whiskez');
    define('MYSQL_PASS', 'passwort');
    define('MYSQL_DATABASE', 'test');
?>

Kleine unnötige Datei von mir mache ich aber gerne so dann hat man nachher nicht 1000 Zeilen in einer Datei sonder eine wo es eingebunden wird und die jeweiligen liegen dann so rum
config.php
PHP:
<?php
include "constant.php";
?>


Hoffe das reicht als Erklärung achja die Datenbank vielleicht noch
Es gibt
Tabelle benuterdaten
Id TINYINT PRIMARY KEY
Nickname VARCHAR(15)
Nachname VARCHAR(20)
Vorname VARCHAR(15)
Passwort CHAR (10)

Tabelle user_rights
ID TINYINT PRIMARY KEY
Nickname VARCHAR(15)
Rechte VARCHAR(15)

Sooo das müsste reichen iss doch einiges zusammen gekommen. Wer sowas braucht kanns sich gerne durchlesen und weiter drauf aufbauen. Das iss dann eigentlich ganz einfach so. Müsste jetzt auch reichen bei weiteren Fragen einfach melden
 
Kenn mich halt mit php no net so gut aus, aba des war sehr verstädnlich, DANKE!
Ach: HAste des mit em Editor gemacht? wenn ja, mit welchem?
 
ich habs mit dem normalen Windows Notepad gemacht. Ansonsten benutz ich gerne auch mal UltraEdit. So wer hat sich das jetzt schon alles kopiert? Und wenn ja funktioniert es auch bei jedem? Oder gibts probleme?
 
Zurück
Oben