Login
Ik probeerde een inlog systeem te maken met:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
session_start();
session_register("myusername");
session_register("mypassword");
header("location:?page=WizzardzLoginWorked.php");
?>
session_start();
session_register("myusername");
session_register("mypassword");
header("location:?page=WizzardzLoginWorked.php");
?>
Ik krijg hierbij meerdere fouten, maar ik begin met de 1e:
Quote:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /Applications/XAMPP/xamppfiles/htdocs/wizzardzmain.php:22) in /Applications/XAMPP/xamppfiles/htdocs/WizzardzLoginCheck.php on line 29
Dit is volgens mij het probleem: Ik zal in het begin een beetje met de code te prutsen, en heb daardoor (volgens mij) een session gestart via Wizzardzmain. Als ik het nu via een andere pagina probeer zegt hij dat er al een verbinding bestaat en daarom geen nieuwe kan starten.
Deze probeerde ik te beeindigen met dit: session_destroy();. Maar ik denk niet dat het werkt.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?
session_start();
$_SESSION['user'] = ("myusername");
$_SESSION['password'] = ("mypassword");
header("location:?page=WizzardzLoginWorked.php");
?>
session_start();
$_SESSION['user'] = ("myusername");
$_SESSION['password'] = ("mypassword");
header("location:?page=WizzardzLoginWorked.php");
?>
Gewijzigd op 07/02/2011 16:47:35 door Rolf -
@rolf , Haakjes onnodig
Komt omdat ik het script gekopieerd had (A)
NOOIT wachtwoorden opslaan in een session.
En session_register() is antiek => $_SESSION['...'].
Quote:
Ik gok dat dit tussen de body tags in je pagina staat. Session_start vindt output naar de browser niet leuk. Zorg er dus voor dat dit alles boven je html wordt afgehandeld.
Klopt, maar hoe doe ik dit precies? Want ik bekijk eerst of een naam wel bij het password hoort. Ik zou naar een nieuwe pagina kunnen linken en daar het script in zetten.. is dit en goede manier?
Denk er eens goed over na ;-)
Toevoeging op 07/02/2011 17:54:39:
Quote:
Het is altijd mogelijk om de logica (php) boven je html te krijgen.
Denk er eens goed over na ;-)
Denk er eens goed over na ;-)
Tja ik bedenk me net dat ik gewoon heel het php script er boven kan zetten. Maar die error zit er nog steeds in.
Let op dat je geen echo / print / whatever doet voordat je nog iets als session, header of cookie doet.
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
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
<?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="wizzardz"; // Database name
$tbl_name="account"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");
// username and password sent from form
$myusername=$_POST['Nickname'];
$mypassword=$_POST['Password'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE Nickname='$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){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_start();
$_SESSION['user'] = (myusername);
header("location:?page=WizzardzLoginWorked.php");
}
else {
echo "Wrong Username or Password";
}
?>
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="wizzardz"; // Database name
$tbl_name="account"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");
// username and password sent from form
$myusername=$_POST['Nickname'];
$mypassword=$_POST['Password'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE Nickname='$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){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_start();
$_SESSION['user'] = (myusername);
header("location:?page=WizzardzLoginWorked.php");
}
else {
echo "Wrong Username or Password";
}
?>
Dit is alles wat nu in mij script staat.
Quote:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /Applications/XAMPP/xamppfiles/htdocs/wizzardzmain.php:22) in /Applications/XAMPP/xamppfiles/htdocs/WizzardzLoginCheck.php on line 29
Warning: Cannot modify header information - headers already sent by (output started at /Applications/XAMPP/xamppfiles/htdocs/wizzardzmain.php:22) in /Applications/XAMPP/xamppfiles/htdocs/WizzardzLoginCheck.php on line 31
Warning: Cannot modify header information - headers already sent by (output started at /Applications/XAMPP/xamppfiles/htdocs/wizzardzmain.php:22) in /Applications/XAMPP/xamppfiles/htdocs/WizzardzLoginCheck.php on line 31
Toevoeging op 08/02/2011 15:40:21:
Laat maar even zitten. Ik heb zojuist alles verandert en kom binnenkort wel met een nieuw topic.
Bedankt alvast!
Dus niet mysql_connect("$server", ... doen, of $sql = "SELECT iets FROM $tabel"
Je moet nog de data ophalen, gebruik daarvoor mysql_fetch_assoc.
Regel 30, als dat een string zou zijn, dan klopt dat niet.