Include + Header:Location Error
Ik hoop dat jullie mij hier mee kunnen helpen.
Ik heb een loginscript gemaakt welke werkt met een SQL database. Deze werkt perfect als ik gewoon de pagina "login.php" naar voren haal.
Deze heb ik nu included staan op een andere pagina omdat hij via een knop moet laden.
Oftwel :
if(isset($_POST["login"]))
{
include("login.php");
}
En hij laad ook netjes het script , ik zie dus de textvelden. Het lijkt er ook op dat hij gewoon inlogt.
Alleen vanaf daar gaat hij niet via Header:location naar de pagina die er zou moeten verschijnen. ( Dit doet hij dus wel met het script los)
Mochten jullie de code willen zien dan kan ik deze altijd even posten, al is die niet al te netjes aangezien ik hiermee nog aan het prutsen ben.
(Hoe posten jullie trouwens die PHP scripten ook met de kleurtjes?)
Alvast bedankt!
Gewijzigd op 21/10/2010 16:48:26 door Patrick Kappen
Zet maar eens je errors aan dan zal je het zien:
Je zal (als het goed is) de volgende melding krijgen: "Headers already sent on.."
Wil je toch doorverwijzen oid, dan zal je met een javascriptje moeten gaan werken.
Maar volgens mij heb ik het niet helemaal duidelijk uitgelegt.
Er zijn 4 verschillende pagina's:
index.php ( Dit is de eerste pagina , waar mijn login.php is ge include waardoor dus als je op een knop drukt Username/Password word getoond en je deze kan invullen.)
login.php ( Dit is een bijna puur html pagina die de gegevens aanpakt en post naar inlogcheck.php)
inlogcheck.php (Hier word het script uitgevoerd om te kijken of je mag inloggen en zal dan via header:position"loginsucces.php" moeten laden.)
loginsucces.php ( Wordt getoond bij correcte login)
Deze header laad hij dus ook als ik index.php ( en de include ) oversla en dus gewoon /localhost/index.php open. Voert hij alles correct uit en opent loginsucces.php
Mijn header staat trouwens gewoon in mijn PHP.
Dit is de code van inlogcheck.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
ob_start();
$host="127.0.0.1"; //Host Name
$username="test"; //MySQL Username
$password="test"; //MySQL Password
$db_name="users"; //Database Name
$tbl_name="users"; //Table Name
//Connect to server and select database
mysql_connect("$host","$username","$password") or die ("Cannot connect");
mysql_select_db("$db_name") or die ("Cannot Select Database");
//Define $myusername and $mypassowrd
$myusername = $_POST["myusername"];
$mypassword = $_POST["mypassword"];
//Protect MySQL Injections
$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 && $mypassword, table row must be 1 row
if($count == 1)
{
session_register("$myusername");
session_register("$mypassword");
header("location:login_succes.php");
}
else
{
echo "Wrong Username or Password";
}
ob_end_flush();
?>
ob_start();
$host="127.0.0.1"; //Host Name
$username="test"; //MySQL Username
$password="test"; //MySQL Password
$db_name="users"; //Database Name
$tbl_name="users"; //Table Name
//Connect to server and select database
mysql_connect("$host","$username","$password") or die ("Cannot connect");
mysql_select_db("$db_name") or die ("Cannot Select Database");
//Define $myusername and $mypassowrd
$myusername = $_POST["myusername"];
$mypassword = $_POST["mypassword"];
//Protect MySQL Injections
$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 && $mypassword, table row must be 1 row
if($count == 1)
{
session_register("$myusername");
session_register("$mypassword");
header("location:login_succes.php");
}
else
{
echo "Wrong Username or Password";
}
ob_end_flush();
?>
Alvast bedankt!
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
Haal ob_start() gerust weg.
Maak van $host="127.0.0.1" eens $host='localhost'.
$vars horen niet tussen quotes. Nergens.
mysql_connect("$host",.... wordt dus mysql_connect($host,....
En op nog veel meer plaatsen.
Gebruik geen session_register(), dat is antiek.
Maar gebruik $_SESSION['...'].
Ik mis session_start().
Bouw foutafhandeling in bij de query's.
En ob_end_flush() kan ook weg.
Gewijzigd op 21/10/2010 17:12:24 door - SanThe -
SanThe Nvt op 21/10/2010 17:10:59:
Zet dit bovenin je script.
Haal ob_start() gerust weg.
Maak van $host="127.0.0.1" eens $host='localhost'.
$vars horen niet tussen quotes. Nergens.
mysql_connect("$host",.... wordt dus mysql_connect($host,....
En op nog veel meer plaatsen.
Gebruik geen session_register(), dat is antiek.
Maar gebruik $_SESSION['...'].
Ik mis session_start().
Bouw foutafhandeling in bij de query's.
En ob_end_flush() kan ook weg.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
Haal ob_start() gerust weg.
Maak van $host="127.0.0.1" eens $host='localhost'.
$vars horen niet tussen quotes. Nergens.
mysql_connect("$host",.... wordt dus mysql_connect($host,....
En op nog veel meer plaatsen.
Gebruik geen session_register(), dat is antiek.
Maar gebruik $_SESSION['...'].
Ik mis session_start().
Bouw foutafhandeling in bij de query's.
En ob_end_flush() kan ook weg.
Als ik er localhost van maakt kan hij geen connectie krijgen met mijn database. Weet ook niet precies wat dat is. Heeft ook iets met de beveiliging op school te maken.
Ik heb alles wat jij aangeeft verandert, vreemd dat ze dit zo op school uitleggen.
Maar ik krijg nergens een error vrij, want hij het script zelf werkt dus wel. Zolang ik hem niet include. Het gaat dus fout zo snel hij via een include word geladen, het lijkt er op dat hij het alleen niet voor elkaar krijgt om login_succes.php te openen.
Ik hoop dat jullie nog suggesties hebben!.