Include + Header:Location Error

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Patrick Kappen

Patrick Kappen

21/10/2010 16:47:14
Quote Anchor link
Hallo,

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
 
PHP hulp

PHP hulp

01/10/2020 17:11:06
 
Mick ForSure

Mick ForSure

21/10/2010 16:49:57
Quote Anchor link
Dit komt omdat een header location altijd buiten je HTML moet staan.

Zet maar eens je errors aan dan zal je het zien:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>


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.
 
Patrick Kappen

Patrick Kappen

21/10/2010 17:00:48
Quote Anchor link
Ik ga dat proberen met de error reporting!

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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();
?>


Alvast bedankt!
 
- SanThe -

- SanThe -

21/10/2010 17:10:59
Quote Anchor link
Zet dit bovenin je script.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
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 -
 
Patrick Kappen

Patrick Kappen

21/10/2010 17:25:28
Quote Anchor link
SanThe Nvt op 21/10/2010 17:10:59:
Zet dit bovenin je script.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
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!.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.