• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mailfunktion für eingeloggte user

Warning: session_destroy() expects exactly 0 parameters, 1 given in C:\xampp\htdocs\Buch\Logout.php on line 2

Der Code :
<?php
session_destroy(username);
?>
 
Werbung:
Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\Buch\Login.php on line 17

Der Code :
echo '$_POST["username"]';
echo '$_POST["password"]';
 
Manchmal hilft es, im PHP.net nachzuschauen, bevor man hier fragt...

PHP:
<?php 
session_destroy();
?>
Ohne Paramenter, nur session_destroy();

Allerdings musst du auf session_destroy() verzichten, wenn du in der Session auch allgemeine Daten wie Sprache, Style, usw. speichern möchtest. Dann musst du mit unset($_SESSION["username"]) arbeiten...

PHP:
echo $_POST["username"];
echo $_POST["password"];
Ohne die Single-Quotes...
 
Werbung:
Und dann noch zum anderen : wenn ich erfolgreich eingeloggt bin (was ich ja immer bin egal was ich eingebe da der code nicht funktioniert) kommt nur das :
Login erfolgreich.
Geschützer Bereich eingeloggt als bertilo

Eigentlich sollte da ja nochwas anderes stehen ... Anch diesem Code :
PHP:
<?php session_start();
$verbindung = mysql_connect("localhost", "root" , "") 
or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); 
mysql_select_db("test") or die ("Datenbank konnte nicht ausgewählt werden"); 
$username = mysql_real_escape_string($_POST["username"]); 
$password = mysql_real_escape_string($_POST["password"]); 
$abfrage = "SELECT username, password FROM test WHERE username = '$username' AND password = '$password'"; 
$ergebnis = mysql_query($abfrage) or die("Statement fehlerhaft: ".$abfrage);
$anzahl = mysql_num_rows($ergebnis);
if($anzahl = 1){
    $row = mysql_fetch_object ($ergebnis);
    $_SESSION['username'] = $username; 
    echo " Login erfolgreich. <br> <a href=\"Geheim.php\">Gesch&uuml;tzer Bereich</a> eingeloggt als  $username";
} elseif($anzahl > 1){
    echo " Es ist ein Fehler aufgetreten.";
 $_SESSION["name"] = $username; 
 echo $_POST["username"];
    echo $_POST["password"];
} else {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.html\">Login</a>"; 
    echo "<br />Ihre eingegebenen Daten :   <br />Benutzername : $username<br />Passwort : $password ";
} 
 
?>


Da steht ja noch :

echo $_POST["username"];
echo $_POST["password"];

das find ich nun komisch ... Und dann noch eine Frage ...
Ich glaube ja hier :
$_SESSION["name"] = $username;
wird ein session erstellt was ich in den folgenden seiten aufrufe aber das geht hier nicht :
PHP:
<?php 
include('check.php');
$verbindung = mysql_connect("localhost", "root" , "") 
or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); 
mysql_select_db("user") or die ("Datenbank konnte nicht ausgewählt werden"); 
$q = mysql_query('SELECT absender, nachricht FROM `'.($_SESSION['name']).'` LIMIT 1') or die(mysql_error());
while($row = mysql_fetch_array($q)) {
echo $row['absender'].' schrieb: '. $row['nachricht'].'<br>';
echo '<a href="sendmail.html">Emial senden<a>';
} 
?>

Dieses hier meine ich : ('SELECT absender, nachricht FROM `'.($_SESSION['name']).'` LIMIT 1')

Da dachte ich mir das da wo `'.($_SESSION['name']).'` steht jetzt der name von dem username den man eingegeben hat steht ... den das session wurde ja hier :

$_SESSION["name"] = $username;

erstellt ...
 
PHP:
#mach aus 
if($anzahl = 1){
# das hier
if($anzahl == 1){

Und das du eingeloggt wirst, obwohl du was Falsches eingibst:
PHP:
} elseif($anzahl > 1){
    echo " Es ist ein Fehler aufgetreten.";
 $_SESSION["name"] = $username; # Lösch das hier
Wieso setzt du $_SESSION['name'] trotzdem, obwohl ein Fehler auftritt? Lösch die Zeile und berichte!
 
Werbung:
Juhu THX es geht :=) und eventuell stell ich sogar den code mal zu den tutorials weil ich nun so happy bin :)
 
Nein, mach das noch nicht. Solltest noch einiges verbessern :p

Bedenke... Man kann sich nun einloggen, etc. Aber wie sieht es mit der Protokollierung aus? Wer hat sich wann eingeloggt? Was ist, wenn er sich nicht selbst ausloggt -> automatisch ausloggen, um die Sicherheit zu erhöhen?
Wie sieht's mit Fehlversuchen aus? -> auch protokollieren und bei verdächtigen Versuchen oder zu vielen -> IP Adresse blocken, etc?
 
Werbung:
Und kann mir jemand sagen was ich hier noch ändern muss ?

PHP:
<html>
<head>
<title>Test</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<?php 
include('check.php');
$verbindung = mysql_connect("localhost", "root" , "") 
or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); 
mysql_select_db("user") or die ("Datenbank konnte nicht ausgewählt werden"); 
$q = mysql_query('SELECT absender, betreff, nachricht FROM `'.($_SESSION['username']).'` LIMIT 1') or die(mysql_error());
while($row = mysql_fetch_array($q)) {
 <div id="btn">
 echo 'von' $row['absender'].' betreff '. $row['betreff'].'<br>';
 </div> 
<div class="box_blue" id="slideToggleBox" style="display: none;">echo $row['nachricht'].</div> 
<script>$("#btn").click(function () {$("#slideToggleBox").slideToggle("slow");});</script> 
 
echo 'von' $row['absender'].' betreff '. $row['betreff'].'<br>';
echo '<a href="sendmail.html">Emial senden<a>';
} 

?> 
</body>
</html>
 
PHP:
<html>
<head>
<title>Test</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<?php 
include('check.php');
$verbindung = mysql_connect("localhost", "root" , "") 
or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); 
mysql_select_db("user") or die ("Datenbank konnte nicht ausgewählt werden"); 
$q = mysql_query('SELECT absender, betreff, nachricht FROM `'.($_SESSION['username']).'` LIMIT 1') or die(mysql_error());
while($row = mysql_fetch_array($q)) {
echo '<div id="btn" style="cursor:pointer;"> von :'.$row['absender']. 'Betreff :' .$row['betreff'].'</div> 
<div class="box_blue" id="slideToggleBox" style="display: none; ">'.$row['nachricht'].'</div> 
<script>$("#btn").click(function () {$("#slideToggleBox").slideToggle("slow");});</script> ';
 
echo '<a href="sendmail.html">Emial senden<a>';
} 
 
?> 
</body>
</html>

^^ Das is komisch ... da steht als error :

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\Buch\Geheim.php:9) in C:\xampp\htdocs\Buch\check.php on line 2

Und was soll das denn bitte sein : Geheim.php:9 ?? php:9 ?? Ich bin deprimiert ... PLS help me (bevor die schule wider anfängt ;(
 
Du inkludierst check.php. Darin wird bereits eine Session mit session_start() gestartet. Und da session_start() IMMER vor jeglicher Ausgabe stehen muss, zeigt dir der PHP-Parser einen Fehler an...
 
Werbung:
PHP:
<?php include('check.php'); ?>
<html>
<head>
<title>Test</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<?php 
$verbindung = mysql_connect("localhost", "root" , "") 
or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); 
mysql_select_db("user") or die ("Datenbank konnte nicht ausgewählt werden"); 
$q = mysql_query('SELECT absender, betreff, nachricht FROM `'.($_SESSION['username']).'` LIMIT 1') or die(mysql_error());
while($row = mysql_fetch_array($q)) {
echo '<div id="btn" style="cursor:pointer;"> von :'.$row['absender']. 'Betreff :' .$row['betreff'].'</div> 
<div class="box_blue" id="slideToggleBox" style="display: none; ">'.$row['nachricht'].'</div> 
<script>$("#btn").click(function () {$("#slideToggleBox").slideToggle("slow");});</script> ';

echo '<a href="sendmail.html">Emial senden<a>';
} 

?> 
</body>
</html>

habs nun so gemacht ^^ da komm keine errors aber da is nur weißer bildschirm ...
und eigentlich müsste da ja noch ganz viel stehen ... Was ist Falsch ?
 
Sorry, aber bitte schau dir einmal die Grundlagen in PHP und HTML an.
Ich vermute, in der check.php ist bereits eine vollständige HTML-Seite enthalten - inkludiert Header, u.s.w...
 
das ist die check.php

<?php
session_start();
if(!isset($_SESSION['username']) or empty($_SESSION['username'])) {
session_destroy();
session_unset();
session_regenerate_id();
header('Location: http://example.org/zur_login_seite_weiterleiten.html');
exit;
} # wenn aber $_SESSION['username'] exisiert, wird der Seiteninhalt sichtbar. Diese Datei einfach in die zu schützende Datei per inlude() einbinden
?>
 
Werbung:
Vermutlich bist du nicht eingeloggt. Denn dann wirst du zu der Adresse in 'Location' weitergeleitet und das könnte eine leere Seite sein, wenn dieser kein Inhalt hat.
 
Also irgendwas funktioniert da nicht ... hier nochmal die codes
Also der code der Login.php

PHP:
<?php session_start();
$verbindung = mysql_connect("localhost", "root" , "") 
or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); 
mysql_select_db("test") or die ("Datenbank konnte nicht ausgewählt werden"); 
$username = mysql_real_escape_string($_POST["username"]); 
$password = mysql_real_escape_string($_POST["password"]); 
$abfrage = "SELECT username, password FROM test WHERE username = '$username' AND password = '$password'"; 
$ergebnis = mysql_query($abfrage) or die("Statement fehlerhaft: ".$abfrage);
$anzahl = mysql_num_rows($ergebnis);
if($anzahl == 1){
    $row = mysql_fetch_object ($ergebnis);
    $_SESSION['username'] = $username; 
    echo " Login erfolgreich. <br> <a href=\"Geheim.php\">Gesch&uuml;tzer Bereich</a> eingeloggt als  $username<br />";
 $username = $_SESSION["username"];
} elseif($anzahl > 1){
    echo " Es ist ein Fehler aufgetreten.";
 echo $_POST["username"];
    echo $_POST["password"];
} else {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.html\">Login</a>"; 
    echo "<br />Ihre eingegebenen Daten :   <br />Benutzername : $username<br />Passwort : $password ";
} 
 
?>

Und da soll ja dann eigentlich auch ein session erstellt werden ....

Und hier der code der geheim.php
PHP:
<?php include('check.php'); ?>
<html>
<head>
<title>Test</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<?php 
$verbindung = mysql_connect("localhost", "root" , "") 
or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); 
mysql_select_db("user") or die ("Datenbank konnte nicht ausgewählt werden"); 
$q = mysql_query('SELECT absender, betreff, nachricht FROM `'.($_SESSION['username']).'` LIMIT 1') or die(mysql_error());
while($row = mysql_fetch_array($q)) {
echo '<div id="btn" style="cursor:pointer;"> von :'.$row['absender']. 'Betreff :' .$row['betreff'].'</div> 
<div class="box_blue" id="slideToggleBox" style="display: none; ">'.$row['nachricht'].'</div> 
<script>$("#btn").click(function () {$("#slideToggleBox").slideToggle("slow");});</script> ';

echo '<a href="sendmail.html">Emial senden<a>';
} 

?> 
</body>
</html>

Und der code der check.php

[PHP
<?php
session_start();
if(!isset($_SESSION['username']) or empty($_SESSION['username'])) {
session_destroy();
session_unset();
session_regenerate_id();
echo "nicht eingeloggt";
}
?>][/PHP]

^^etwas geändert also anstatt location hab ich nun echo
 
Werbung:
Was machst du eigentlich andauernd?

Wenn jemand nicht eingeloggt ist, wird er den geschützen Bereich trotzdem einsehen können.

Und was bringt dir $username = $_SESSION["username"];?

Schau mal in den Quelltext, ob du da was siehst. Wenn ja, dann liegt's eventuell an dem display:none?
 
1. man müsste trotzdem das darüber sehen
2. das is erst diplay :none und wenn man drauf klickt fährt das so per javascript aus
 
Zurück
Oben