Wie die Weiterleitung nach dem erfolgreichen login? [PHP]
Ich habe ein login-system. Die Registrierungsseite funktioniert wie ein Charme. Aber es gibt einige problem mit der login-Seite. Wenn ich versuche mich einzuloggen, loggt es mich in, aber es bleibt auf der gleichen login-Seite. Ich meine, es ist keine sichtbare Veränderung in der login-Seite auch nach der Anmeldung. Ich will es redirect nach erfolgreichem login, habe ich versucht, Header, aber für einige seltsame Grund, warum es nicht funktioniert.
Mein code (PHP in die Seite):
<?php //Start the Session
session_start();
require('connect.php');
//3. If the form is submitted or not.
//3.1 If the form is submitted
if (isset($_POST['username']) and isset($_POST['password'])){
//3.1.1 Assigning posted values to variables.
$username = $_POST['username'];
$password = $_POST['password'];
//3.1.2 Checking the values are existing in the database or not
$query = "SELECT * FROM `user` WHERE username='$username' and password='$password'";
$result = mysql_query($query) or die(mysql_error());
$count = mysql_num_rows($result);
//3.1.2 If the posted values are equal to the database values, then session will be created for the user.
if ($count == 1){
$_SESSION['username'] = $username;
header("location:redirectafterlogin.php"); //header to redirect, but doesnt work
}else{
//3.1.3 If the login credentials doesn't match, he will be shown with an error message.
echo "Invalid Login Credentials.";
}
}
?>
HTML in die Seite:
<title> Login</title>
<link rel="stylesheet" type="text/css" href="usr_style.css" />
</head>
<body>
<!-- Form for logging in the users -->
<div class="register-form">
<p>Please login to continue</p>
<h1>Login</h1>
<form action="login.php" method="POST">
<p><label>User Name : </label>
<input id="username" type="text" name="username" required placeholder="username" /></p>
<p><label>Password : </label>
<input id="password" type="password" name="password" required placeholder="password" /></p>
<a class="btn" href="register.php">Register</a>
<input class="btn" type="submit" name="submit" value="Login" />
</form>
</div>
</body>
</html>
Was mache ich falsch?
EDIT:
Redirectafterlogin.php code (es ist im Grunde ein Gästebuch):
<body>
<div class="main">
<br>
<div id="title"><h2>Post</h2></div>
<br>
<div id="f">
<form id="form1" name="form1" method="post" action="addpost.php">
<table id="g">
<td>Post</td>
<td><textarea name="comment" placeholder="Please type your post here...." rows=10 cols=50 id="comment"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input id="btn" type="submit" name="Submit" value="Post" /> <input id="btn" type="reset" name="Submit2" value="Reset" /></td>
</tr>
</table>
</form>
</div>
<hr>
<?php
$host=""; //Host name
$username=""; //Mysql username
$password=""; //Mysql password
$db_name=""; //Database name
$tbl_name=""; //Table name
//Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect server ");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name ORDER BY ID DESC LIMIT 50";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result)){
?>
<div id="post_info">
<br>
<div id="author">
Name:
<?php echo htmlspecialchars($rows['name']); ?>
</div>
<div id="time">
Time: <?php echo htmlspecialchars($rows['datetime']); ?>
</div>
<br>
<div id="post">
<pre><?php echo htmlspecialchars($rows['comment']); ?></pre>
</div>
</div>
<br>
<?php
}
mysql_close(); //close database
?>
Fehler:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /Kunden/7/e/5/sattapesatta.com/httpd.www/login.php:5) in /customers/7/e/5/sattapesatta.com/httpd.www/login.php on line 6 Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /Kunden/7/e/5/sattapesatta.com/httpd.www/login.php:5) in /customers/7/e/5/sattapesatta.com/httpd.www/login.php in Zeile 6 1 Warning: Cannot modify header information - headers already sent by (output started at /Kunden/7/e/5/sattapesatta.com/httpd.www/login.php:5) in /customers/7/e/5/sattapesatta.com/httpd.www/login.php auf der Linie 20
header("Location: http://www.yoursite.com/redirectafterlogin.php");
mit einem vollen http
nennen.Umm..?! Haben Sie Lesen die Frage? Ich habe Kopfzeilen, aber aus irgendeinem seltsamen Grund, warum Sie nicht funktionieren. Alle anderen Möglichkeiten, die ich umleiten kann? Oder bin ich setzen die header an der falschen Stelle?
Ähmm.... Ja, ich lese die Frage. Ist das dein vollständiger code, oder ist da mehr auf der gleichen Seite, dass wir nicht aufmerksam gemacht? Sie sagen, dass Ihre Anmeldung erfolgreich ist.
Ich glaube, ich legte den Kopf an der falschen Stelle. Was denkst du?
Tun
var_dump($count);
oder echo $count;
direkt nach $count = mysql_num_rows($result);
sehen, was passiert. Ich vermute, dein login funktioniert nicht, wie Sie denken, es tut. Hinzufügen von Fehler-reporting an den Anfang der Datei(en) error_reporting(E_ALL); ini_set('display_errors', 1);
InformationsquelleAutor Praneeth | 2014-06-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, eine Umleitung mit header-Funktion, die Sie haben, es zu schreiben, richtig zu arbeiten.
Wenn Sie nicht verwenden, werden die Großbuchstaben und das Leerzeichen nach dem Doppelpunkt, wird es nicht funktionieren. Bitte Lesen Sie die Bedienungsanleitung auf php.net.
(Edit)
Ich sah auch in den Kommentaren zu versuchen, fügen Sie den vollständigen Pfad, das ist nicht nötig, damit es funktioniert.
"ich sah auch in den Kommentaren zu versuchen, fügen Sie den vollständigen Pfad, das ist nicht nötig, damit es funktioniert." Gleiche gilt für die groß -
L
. Was nicht gültig istheader(' Location: ...');
oderheader(' location: ...');
mit einem Leerzeichen vorLocation
oderlocation
. Es ist am besten, zunächst nur die Frage, dann die Antwort.InformationsquelleAutor Johnny Dew
Versuchen, diese
Auch aus dem PHP-docs
http://www.php.net/manual/en/function.header.php
InformationsquelleAutor Golu
Der einfachste Weg:
Setzen Sie diese, bevor irgendein html-Code in Ihre Seite (nicht einmal ein Leerzeichen sein sollte, bevor diese-code)
<? php ob_start(); ?>
Verwenden Sie diese -Es ist groß-und Kleinschreibung -
<?php header("Location: youraddress.html");?>
<?php ob_end_flush(); ?>
InformationsquelleAutor Ahmed KhaShaba
Entfernen Sie Leerzeichen und Zeilenumbrüche vor dem header:
Sollte dies:
Und Ihre:
Sollte nur:
// whitespace removed
"white space" für "oben", die nicht untersession_start();
Ich einfach entfernt die Leerzeichen. Vielleicht sind Sie immer Fehler "headers already sent". Es sollte keine Ausgabe vor dem Header wie Leerzeichen oder nächsten Zeilen.
Ich habe versucht, das entfernen der Leerzeichen, aber immer noch das gleiche.
Ich bekomme kein Fehler. Die Seite ändert sich nicht. Es sieht fast so aus wie es neu geladen.
Sie können überprüfen, wenn die Header bereits gesendet sind, ersetzen Sie die Umleitung mit :
if (headers_sent()) { die("Redirect failed."); }
InformationsquelleAutor no_juan