Probleem met het tonen van profiel pagina

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jos Vermassen

Jos Vermassen

27/10/2012 10:34:30
Quote Anchor link
Hallo,

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)
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
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>
Gewijzigd op 27/10/2012 10:39:48 door Jos Vermassen
 
PHP hulp

PHP hulp

04/05/2024 10:32:16
 
Obelix Idefix

Obelix Idefix

27/10/2012 13:24:58
Quote Anchor link
Geef het veld/de velden op die je wilt opvragen en geen *
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.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/10/2012 13:55:31
Quote Anchor link
Jos ook van mij een paar tips:
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
 
Obelix Idefix

Obelix Idefix

27/10/2012 17:37:40
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php "SELECT *" ?>
Maak daarvan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php "SELECT username, birth" ?>

Dat zijn de velden die TS gebruikt.

Variabelen buiten quotes:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php
$qry
= "SELECT * FROM users WHERE id=$id";?>

=>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php
$qry
= "SELECT * FROM users WHERE id=".$id; ?>

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php
$qry
= "SELECT username, birth FROM users WHERE id=".(int)$_GET['id']; ?>
Gewijzigd op 27/10/2012 17:39:06 door Obelix Idefix
 
Jos Vermassen

Jos Vermassen

27/10/2012 22:37:37
Quote Anchor link
Alvast bedankt voor deze tips, jullie zien wel dat ik nog wat nieuw ben met php. :-) Ik heb deze dingen zo goed mogelijk toegepast, maar de gegevens uit de databank worden nog steeds niet getoond. Doe ik hier ook iets fout?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "Hallo <a href='showprofiel.php?id=".$resultaat['id']."'>".$_SESSION['username']."</a>";
?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/10/2012 22:41:13
Quote Anchor link
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.
 
Jos Vermassen

Jos Vermassen

27/10/2012 22:46:50
Quote Anchor link
ja daar hou ik rekening met, alles is met kleine letters

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

?>
Gewijzigd op 27/10/2012 22:55:00 door Jos Vermassen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/10/2012 22:59:56
Quote Anchor link
vervang deze:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(isset($_GET['id']) && is_numeric($_GET['id']))
?>


eens voor deze:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(isset($_GET['id']) && intval($_GET['id']) > 1)
?>
 
Jos Vermassen

Jos Vermassen

27/10/2012 23:08:44
Quote Anchor link
Nog steeds hetzelfde
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/10/2012 23:17:23
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
 print_r($_GET);
?>


zet dat eens boven in je script. hij laat dan alle variabelen zien die hij kent in $_GET
 
Jos Vermassen

Jos Vermassen

27/10/2012 23:21:51
Quote Anchor link
Dit geeft ie:


Array ( [id] => ) id: 1
username: admin
birth: 0
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/10/2012 23:36:23
Quote Anchor link
Array ( [id] => ) id: 1

1 is 1 he. probeer het liever met een ander id.

jouwpagina.php?id=2
 
Jos Vermassen

Jos Vermassen

27/10/2012 23:43:20
Quote Anchor link
maar het id van de user die ingelogd is, moet er toch komen te staan?
Nu springt hij telkens naar de else.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(isset($_GET['id']) && is_numeric($_GET['id']))
{

    $id = $_GET['id'];
}

else
{
    $id = 1;    
}

?>
 
Reshad F

Reshad F

27/10/2012 23:56:42
Quote Anchor link
Een paar opmerkingen.. maak even goede queries want wat je nu hebt is 3x niks ( no offense want ik zag dat je aan het leren bent ) maar je lost fouten op door eerst correct te programmeren en je moet niet op zoek gaan naar fouten oplossen maar je script optimalizeren daar kom je veel verder mee.

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 :)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/10/2012 23:58:07
Quote Anchor link
Nee met $_GET haal je variabelen uit de url.

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
 



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.