Wie und prüfen Sie, ob eine Sitzung nach dem login?
Ich bin neu in PHP und kämpft mit einer login-Seite. Ich habe Folgendes Skript, das "funktioniert" aber jetzt würde ich gerne eine Sitzung, wenn der Benutzer das Kennwort korrekt ist, kann ich auf andere Seiten. So versuche ich herauszufinden, was notwendig ist, um auf die anderen Seiten, um zu überprüfen für die Sitzung.
Wenn ich etwas wie dieses auf die Seite komme ich wieder auf:
<?php
if($_SESSION['login'] = "1") {
echo "you are logged in";
}
else
{
echo "you are not logged in";
}
?>
Scheint es, wie ich meine Erfolgsmeldung die ganze Zeit. Ich muss nicht verstehen, wie das funktioniert. Anregungen geschätzt--bin für völlig umschreiben, wenn ich muss. Danke!
Hier ist meine aktuelle login-Skript:
<?php
//error reporting
ini_set('display_errors',1);
error_reporting(E_ALL);
$host="foo"; //Host name
$username="foo"; //Mysql username
$password="foo"; //Mysql password
$db_name="foo"; //Database name
$tbl_name="members"; //Table name
//Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
//username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
//To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
//Mysql_num_row is counting table row
$count=mysql_num_rows($result);
//If result matched $myusername and $mypassword, table row must be 1 row
if($count==1) {
session_start();
$_SESSION['login'] = "1";
header ("Location: http://www.google.com");
}
else {
session_start();
$_SESSION['login'] = '';
header ("Location: http://www.yahoo.com");
}
?>
Anwenden der änderungen unten vorgeschlagen, ich habe Folgendes in die Seite, ich komme zurück zu:
<?php
session_start();
if ($_SESSION['login'] == "1") {
echo "you are logged in";
}
else if ($_SESSION['login'] == "")
{
echo "you are not logged in";
}
?>
und die folgende änderung zu meinem login-Skript:
if($count==1) {
session_start();
$_SESSION['login'] =="1";
header ("Location: login.php");
}
else {
session_start();
$_SESSION['login'] == "";
header ("Location: login.php");
}
Nun, egal was, ich bin immer meinen "Sie sind nicht angemeldet" - Meldung...hmm.
Update--OK--wenn ich das NICHT machen, das == ändern in meinem script scheint es zu funktionieren. Wenn ich
if($count==1) {
session_start();
$_SESSION['login'] = "1";
header ("Location: login.php");
}
else {
session_start();
$_SESSION['login'] = "";
header ("Location: login.php");
}
und diese in die Seite, ich komm zurück zu:
<?php
session_start();
if ($_SESSION['login'] == "1") {
echo "you are logged in";
}
else if ($_SESSION['login'] == "")
{
echo "you are not logged in";
?>
...das scheint zu funktionieren.
session_start()
auf der anderen Seite, die auf $_SESSION
. Alle Skripts, die Zugriff auf $_SESSION
brauchen eine session_start()
Es ist ein Fehler
$_SESSION['login'] = "1"
muss $_SESSION['login'] == "1"
InformationsquelleAutor Scott H. | 2012-11-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte es sein: if ($_SESSION['login'] == "1")
weil die Art und Weise Sie es tun, setzt es den Wert und gibt true zurück.
Ich habe versucht, hinzufügen von Bearbeitungen empfohlen-jetzt habe ich anscheinend meinen "Sie sind nicht angemeldet" echo jedes mal. Sehen Sie zusätzliche Probleme mit meinem code?
Edit: aus den oben genannten änderungen, und SCHEINEN in Ordnung zu sein jetzt. Danke!
InformationsquelleAutor stephenbayer
Ihre varible $myusername und $mypassword angegeben wurde für zwei verschiedene Funktionen, Sie surpose zu indivisualise Sie.......
InformationsquelleAutor Thab-key