Probleem met het tonen van profiel pagina
Ik ben bezig met het schrijven van een profielpagina. Het deel om te registreren en in te loggen werkt al, maar wanneer een user ingelogd is, wil ik dat hij een profielpagina kan zien door het klikken op zijn naam ($_SESSION['username']) maar dat werkt niet. wanneer ik op de naam klik komen er geen gegevens uit de databank, maar alleen "id: , username: , birth: ". Ik denk het probleem ergens zit met het opvragen van het id. Weet iemand wat ik fout doe?
Alvast bedankt.
showprofiel.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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
include("../includes/connection.php");
// Inialize session
session_start();
// Check, if username session is NOT set then this page will jump to login page
if (!isset($_SESSION['username'])) {
header('Location: index.php');
}
?>
<html>
<head>
<title>User</title>
</head>
<body>
<?php
$id = $_GET['id'];
$qry = "SELECT * FROM users WHERE id=$id";
$resultaatQry = mysql_query($qry);
$resultaat = mysql_fetch_array($resultaatQry);
?>
id: <?php echo $id; ?>
<br>
username: <?php echo $resultaat['username']; ?>
<br>
birth: <?php echo $resultaat['birth']; ?>
<br>
<?php print $qry; ?>
</body>
</html>
securedpage.php
<?php
include("../includes/connection.php");
$id = $_GET['id'];
// Inialize session
session_start();
// Check, if username session is NOT set then this page will jump to login page
if (!isset($_SESSION['username'])) {
header('Location: index.php');
}
?>
<html>
<head>
<title>Secured Page</title>
</head>
<body>
<?php
$qry = "SELECT * FROM users WHERE id=$id";
$resultaatQry = mysql_query($qry);
$resultaat = mysql_fetch_array($resultaatQry);
echo "Hallo <a href='showprofiel.php?id=".$resultaat['id']."'>".$_SESSION['username']."</a>";
?>
<br>You can put your restricted information here.</p>
<a href="../nieuws/nieuwsadmin.php">+ Nieuwsadmin</a>
<br>
<a href="logout.php">+ Logout</a>
</body>
</html>
include("../includes/connection.php");
// Inialize session
session_start();
// Check, if username session is NOT set then this page will jump to login page
if (!isset($_SESSION['username'])) {
header('Location: index.php');
}
?>
<html>
<head>
<title>User</title>
</head>
<body>
<?php
$id = $_GET['id'];
$qry = "SELECT * FROM users WHERE id=$id";
$resultaatQry = mysql_query($qry);
$resultaat = mysql_fetch_array($resultaatQry);
?>
id: <?php echo $id; ?>
<br>
username: <?php echo $resultaat['username']; ?>
<br>
birth: <?php echo $resultaat['birth']; ?>
<br>
<?php print $qry; ?>
</body>
</html>
securedpage.php
<?php
include("../includes/connection.php");
$id = $_GET['id'];
// Inialize session
session_start();
// Check, if username session is NOT set then this page will jump to login page
if (!isset($_SESSION['username'])) {
header('Location: index.php');
}
?>
<html>
<head>
<title>Secured Page</title>
</head>
<body>
<?php
$qry = "SELECT * FROM users WHERE id=$id";
$resultaatQry = mysql_query($qry);
$resultaat = mysql_fetch_array($resultaatQry);
echo "Hallo <a href='showprofiel.php?id=".$resultaat['id']."'>".$_SESSION['username']."</a>";
?>
<br>You can put your restricted information here.</p>
<a href="../nieuws/nieuwsadmin.php">+ Nieuwsadmin</a>
<br>
<a href="logout.php">+ Logout</a>
</body>
</html>
Gewijzigd op 27/10/2012 10:39:48 door Jos Vermassen
Variabelen buiten quotes. Waar is de controle op $_GET['id']/$id? --> scrip is lek.
Waar is je foutafhandeling bij je query?
Wat is het nut van de query in securedpage.php? Je vraagt het id op obv het id in de url om daarmee een id in een link te maken.
Bedenk dat als ik het id in de url verander, ik dus probleemloos de gegevens van iemand anders kan opvragen!
Zet error-reporting aan om te kijken of er foutmeldingen verschijnen.
Session_start zou ik sowieso helemaal bovenaan de pagina zetten.
Ik zou de login houden op login.php en index.php als de pagina waarop je land als je bent ingelogd. dit is logischer.
Zet errorreporting aan zodat je alle waarschuwingen en fouten te zien krijgt. ( error_reporting(E_ALL); )
Hou je aan de regel 'Script bovenin, HTML onderin'.
Handel fouten van mysql_query altijd af.
Wanneer je script tot zover werkt kun je met sessions de ingelogde gebruiker checken en zo uitvinden of hij deze pagina wel mag zien
@obelix: wat bedoel je met geen * Variabelen buiten quotes?
Gewijzigd op 27/10/2012 14:02:57 door Frank Nietbelangrijk
Frank Nietbelangrijk op 27/10/2012 13:55:31:
@obelix: wat bedoel je met geen * Variabelen buiten quotes?
Zijn 2 regels/opmerkingen:
In de 1e query staat nu Maak daarvan
Dat zijn de velden die TS gebruikt.
Variabelen buiten quotes:
=>
Bovenstaande is de query van TS. Hier moet nog de velden worden benoemd en controle op plaatsvinden.
Er van uitgaande dat $id een getal is:
Gewijzigd op 27/10/2012 17:39:06 door Obelix Idefix
Code (php)
1
2
3
2
3
<?php
echo "Hallo <a href='showprofiel.php?id=".$resultaat['id']."'>".$_SESSION['username']."</a>";
?>
echo "Hallo <a href='showprofiel.php?id=".$resultaat['id']."'>".$_SESSION['username']."</a>";
?>
ik kan niet in jouw database kijken maar hou je rekening met hoofdletters en kleine letters in je tabel/veld namen want mysql is wel case sensitive.
Toevoeging op 27/10/2012 22:54:32:
Ik heb nu dit gedaan, maar nu kom ik steeds uit bij de else (id=1):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if(isset($_GET['id']) && is_numeric($_GET['id']))
{
$id = $_GET['id'];
}
else
{
$id = 1;
}
$query = mysql_query("SELECT username, birth FROM users WHERE id='". $id ."'");
$result = mysql_fetch_array($query);
?>
if(isset($_GET['id']) && is_numeric($_GET['id']))
{
$id = $_GET['id'];
}
else
{
$id = 1;
}
$query = mysql_query("SELECT username, birth FROM users WHERE id='". $id ."'");
$result = mysql_fetch_array($query);
?>
Gewijzigd op 27/10/2012 22:55:00 door Jos Vermassen
eens voor deze:
Nog steeds hetzelfde
zet dat eens boven in je script. hij laat dan alle variabelen zien die hij kent in $_GET
Array ( [id] => ) id: 1
username: admin
birth: 0
1 is 1 he. probeer het liever met een ander id.
jouwpagina.php?id=2
Nu springt hij telkens naar de else.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
if(isset($_GET['id']) && is_numeric($_GET['id']))
{
$id = $_GET['id'];
}
else
{
$id = 1;
}
?>
if(isset($_GET['id']) && is_numeric($_GET['id']))
{
$id = $_GET['id'];
}
else
{
$id = 1;
}
?>
ten eerste ontbreekt er goede foutafhandeling in je query hiervoor lees dit: ( ook staan er dingen in wat al gezegd zijn )
http://www.phphulp.nl/php/tutorial/overig/beginnersfouten-tegengaan/763/
verder moet je kijken naar de php functies die je i.c.m. sql gebruikt in jou geval moet je ipv mysql_fetch_array, mysql_fetch_assoc gebruiken op php.net kan je het verschil zien. ik heb even nu geen tijd om er verder op in te gaan maar los deze dingen op en dan kunnen we verder kijken :)
www.jouwsite.com/index.php?id=5
index.php krijgt $_GET['id'] = 5
dus heeft niets te maken met de user die ingelogd is.
Daarvoor gebruiken we normaliter $_SESSION in plaats van $_GET
Gewijzigd op 28/10/2012 00:08:59 door Frank Nietbelangrijk