Naam niet weergegeven
Ik ben bezig met een klant login voor mijn website.
Het login formulier werkt uitstekend.
Na het inloggen wordt er een session gezet en word je doorgestuurd naar de beveiligde pagina. Werkt allemaal nog goed. Maar als je dan binnen die beveiligde pagina bent wil ik dit weergeven " dit is het beveiligde gedeelte 'klant001' "
( kalant001 staat voor de gebruikersnaam )
Dit eeft hij weer : dit is het beveiligde gedeelte.
Dit is mijn code.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
include ("config.php");
if ( isset($_SESSION['login']) ) {
$gegegevensophalen = mysql_query ( " SELECT * FROM members WHERE naam = '". $_SESSION['login'] ."' ");
$row = mysql_fetch_array($gegegevensophalen);
echo 'Dit is het beveiligde gedeelte' .$row['naam'];
}
else {
echo ' geen rechten tot deze pagina';
}
?>
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
include ("config.php");
if ( isset($_SESSION['login']) ) {
$gegegevensophalen = mysql_query ( " SELECT * FROM members WHERE naam = '". $_SESSION['login'] ."' ");
$row = mysql_fetch_array($gegegevensophalen);
echo 'Dit is het beveiligde gedeelte' .$row['naam'];
}
else {
echo ' geen rechten tot deze pagina';
}
?>
Al vast bedankt,
Joren
En waar controleer je of je query wel gelukt is en of hij wel resultaten opgelevert heeft? Dat ontbreekt nu, dus heb je geen idee of er wel degelijk een naam uit de database opgehaald is...
Bij mysql_query() or trigger_error(mysql_error());
Zetten
Code (php)
1
2
3
2
3
<?php
$gegegevensophalen = mysql_query ( " SELECT * FROM members WHERE naam = '". $_SESSION['login'] ."' ") or die(mysql_error());
?>
$gegegevensophalen = mysql_query ( " SELECT * FROM members WHERE naam = '". $_SESSION['login'] ."' ") or die(mysql_error());
?>
Maar dit verandert niets.
Edit:
@gijs
Is or die (mysql_error()) ook goed ?
@gijs
Is or die (mysql_error()) ook goed ?
Gewijzigd op 01/01/1970 01:00:00 door joren vh
Dus:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$sQuery = "
SELECT kolom
FROM tabel
WHERE kolom = 'waarde'
";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
trigger_error('Geen records opgehaald met query: '.$sQuery);
}
else
{
// Verder met je script
}
?>
$sQuery = "
SELECT kolom
FROM tabel
WHERE kolom = 'waarde'
";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
trigger_error('Geen records opgehaald met query: '.$sQuery);
}
else
{
// Verder met je script
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
"dit is het beveiligde gedeelte"
De code is nu als volgt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
include ("config.php");
if ( isset($_SESSION['login']) ) {
$gegegevensophalen = mysql_query ( " SELECT * FROM members WHERE naam = '". $_SESSION['login'] ."' ") or die(mysql_error());
$controlegegevens = mysql_num_rows($gegevensophalen);
$row = mysql_fetch_array($gegegevensophalen);
echo 'Dit is het beveiligde gedeelte' .$row['naam'];
}
else {
echo ' geen rechten tot deze pagina';
}
?>
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
include ("config.php");
if ( isset($_SESSION['login']) ) {
$gegegevensophalen = mysql_query ( " SELECT * FROM members WHERE naam = '". $_SESSION['login'] ."' ") or die(mysql_error());
$controlegegevens = mysql_num_rows($gegevensophalen);
$row = mysql_fetch_array($gegegevensophalen);
echo 'Dit is het beveiligde gedeelte' .$row['naam'];
}
else {
echo ' geen rechten tot deze pagina';
}
?>
Joren
Edit:
Kan het niet volgens hoe ik het doe ?
Kan het niet volgens hoe ik het doe ?
Gewijzigd op 01/01/1970 01:00:00 door joren vh
In het laatste else statement weet je nu zeker dat 1) je query gelukt is en 2) de query resultaten opgeleverd heeft. Nu kun je dus fijn gaan fetchen en weergeven. In jouw code heb je die twee zekerheden (nog) niet, aangezien je ze niet in een if/else constructie verwerkt.
Verder is een trigger_error() wat netter dan die(). Deze laatste helpt meteen je hele script om zeep en dat is vaak niet wat je wilt...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
include ("config.php");
if(isset($_SESSION['login']))
{
$controlegegevens = "SELECT * FROM members WHERE naam = '". $_SESSION['login'] ."'";
if(($gegevensophalen = mysql_query($controlegegevens)) !== false)
{
if(mysql_num_rows($gegevensophalen) >= 1)
{
$row = mysql_fetch_array($gegegevensophalen);
echo 'Dit is het beveiligde gedeelte' .$row['naam'];
}
else {
echo ' geen rechten tot deze pagina';
}
}
}
?>
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
include ("config.php");
if(isset($_SESSION['login']))
{
$controlegegevens = "SELECT * FROM members WHERE naam = '". $_SESSION['login'] ."'";
if(($gegevensophalen = mysql_query($controlegegevens)) !== false)
{
if(mysql_num_rows($gegevensophalen) >= 1)
{
$row = mysql_fetch_array($gegegevensophalen);
echo 'Dit is het beveiligde gedeelte' .$row['naam'];
}
else {
echo ' geen rechten tot deze pagina';
}
}
}
?>
Ben in een goeie bui, volgens mij klopt ie.
Gewijzigd op 01/01/1970 01:00:00 door Erik Rijk
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
include ("config.php");
if ( isset($_SESSION['login']) ) {
$gegegevensophalen = mysql_query ( " SELECT * FROM members WHERE naam = '". $_SESSION['login'] ."' ") ;
if(!$gegegevensophalen = mysql_query($gegegevensophalen)) {
trigger_error(mysql_error(). '<br /> in query: '.$gegegevensophalen);
}
elseif(mysql_num_rows(gegegevensophalen) == 0) {
trigger_error('geen records opgehaald met query: '.$gegegevensophalen);
}
else {
$controlegegevens = mysql_num_rows($gegegevensophalen);
$row = mysql_fetch_array($gegegevensophalen);
echo 'Dit is het beveiligde gedeelte' .$row['naam'];
}
}
else {
echo ' geen rechten tot deze pagina';
}
?>
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
include ("config.php");
if ( isset($_SESSION['login']) ) {
$gegegevensophalen = mysql_query ( " SELECT * FROM members WHERE naam = '". $_SESSION['login'] ."' ") ;
if(!$gegegevensophalen = mysql_query($gegegevensophalen)) {
trigger_error(mysql_error(). '<br /> in query: '.$gegegevensophalen);
}
elseif(mysql_num_rows(gegegevensophalen) == 0) {
trigger_error('geen records opgehaald met query: '.$gegegevensophalen);
}
else {
$controlegegevens = mysql_num_rows($gegegevensophalen);
$row = mysql_fetch_array($gegegevensophalen);
echo 'Dit is het beveiligde gedeelte' .$row['naam'];
}
}
else {
echo ' geen rechten tot deze pagina';
}
?>
En daar krijg ik deze foutmelding mee.
Code (php)
1
2
2
Notice: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #4' at line 1
in query: in D:\Program Files\EasyPHP 2.0b1\www\membersysteem\test.php on line 10
in query: in D:\Program Files\EasyPHP 2.0b1\www\membersysteem\test.php on line 10
Dank,
joren
Kortom, nog even iets van een trigger_error() met de mysql foutmelding en de query erin.
ps. @Joren: kijk nog even goed naar je code. Die klopt niet. Je gaat een mysql_query() uitvoeren met iets dat al een resultaat van mysql_query(). Dat gaat niet werken.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
if(!$gegegevensophalen = mysql_query($gegegevensophalen)) {
Tja, de bekende problemen met logische namen... Het ene moment is $gegegevensophalen een resultset en het andere moment is $gegegevensophalen een query. Wat dacht je er van om bv. $result en $query te gaan gebruiken? Dan is direct duidelijk wat er nu in de variabele staat!
$gegegevensophalen zegt 10x niks, het is een soort van werkwoord, dus een actie en dus is het een naam voor een functie. Een functie doet iets, een variabele doet niets maar bevat data.
Kortom, ga logische namen verzinnen en toepassen in je systeem. Dan heb je nooit meer last van dit soort zelfgeschreven bugs.
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
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
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
include ("config.php");
if ( isset($_SESSION['login']) ) {
//hier ff mysql_query weggehaald.. :) Anders voer je 2x mysql_query uit:)
$sSql = " SELECT * FROM members WHERE naam = '". $_SESSION['login'] ."' ";
if(!$rResult = mysql_query($sSql) {
trigger_error(mysql_error(). '<br /> in query: '.$sSql);
}
elseif(mysql_num_rows($rResult) == 0) {
trigger_error('geen records opgehaald met query: '.$sSql.'
<br/>'.mysql_error());
}
else {
if(mysql_num_rows($rResult) == 1){
$aRow = mysql_fetch_array($rResult);
echo 'Dit is het beveiligde gedeelte' .$aRow['naam'];
}
}
else {
echo ' geen rechten tot deze pagina';
}
?>
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
include ("config.php");
if ( isset($_SESSION['login']) ) {
//hier ff mysql_query weggehaald.. :) Anders voer je 2x mysql_query uit:)
$sSql = " SELECT * FROM members WHERE naam = '". $_SESSION['login'] ."' ";
if(!$rResult = mysql_query($sSql) {
trigger_error(mysql_error(). '<br /> in query: '.$sSql);
}
elseif(mysql_num_rows($rResult) == 0) {
trigger_error('geen records opgehaald met query: '.$sSql.'
<br/>'.mysql_error());
}
else {
if(mysql_num_rows($rResult) == 1){
$aRow = mysql_fetch_array($rResult);
echo 'Dit is het beveiligde gedeelte' .$aRow['naam'];
}
}
else {
echo ' geen rechten tot deze pagina';
}
?>
En zo dan?
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Wat moet ik nou gaan wijzigen aan de code die ik hier boven poste ?
Dank
joren
Tipje van de sluier: regel 8, in de code die je eerder postte.
Notice: geen records opgehaald met query: Resource id #4 in D:\Program Files\EasyPHP 2.0b1\www\membersysteem\test.php on line 14
dank
Joren
Edit:
Ik probeer Robert zijn script uit maar krijg bovenstaande notice.
zie ik wat over het hoofd ?
Ik probeer Robert zijn script uit maar krijg bovenstaande notice.
zie ik wat over het hoofd ?
Gewijzigd op 01/01/1970 01:00:00 door joren vh
joren schreef op 17.01.2008 23:28:
@ Robert. Thx. Nu geeft hij deze notice
Notice: geen records opgehaald met query: Resource id #4 in D:\Program Files\EasyPHP 2.0b1\www\membersysteem\test.php on line 14
dank
Joren
Notice: geen records opgehaald met query: Resource id #4 in D:\Program Files\EasyPHP 2.0b1\www\membersysteem\test.php on line 14
dank
Joren
Edit:
Ik probeer Robert zijn script uit maar krijg bovenstaande notice.
zie ik wat over het hoofd ?
Ik probeer Robert zijn script uit maar krijg bovenstaande notice.
zie ik wat over het hoofd ?
Probeer nu nog eens? Ik denk dat er nog e.e.a. niet klopte.. :)
$gegegevensophalen => $result, het betreft een resultset.
$controlegegevens => $iAantal, $iGevonden_records, iets in die geest, het getal (vandaar de i voor Integer) geeft het aantal gevonden records aan in de resultset.
Wanneer je een werkwoord in een naam opneemt, kan dat alleen maar voor een functie. Een functie doet iets, een constante of een variabele doet niets, een werkwoord is dan niet op zijn plaats. Beschrijf altijd het soort data dat in de variabele staat, dat maakt duidelijk wat er in staat. Duhh!
Met het voorvoegstel s, i, a en o kun je aangeven dat het om een string, integer, array of object gaat:
$sNaam, $iHuisnummer, $aMaanden, $oBestelling, etc. etc.
pgFrank schreef op 17.01.2008 23:31:
En hier zou je de 'r' voor een resource/result nog aan toe kunnen voegen:Met het voorvoegstel s, i, a en o kun je aangeven dat het om een string, integer, array of object gaat:
$sNaam, $iHuisnummer, $aMaanden, $oBestelling, etc. etc.
$sNaam, $iHuisnummer, $aMaanden, $oBestelling, etc. etc.
Zo heb ik het nu ook aangepast in die code. Ik gebruik ook vaak voorvoegsel r voor een Resultset. -> Ik noem ze niet altijd result, maar geef ze vaak namen voor hetgeen waarvoor die query gebruikt wordt. Dit houdt het vaak overzichtelijk en je ziet meteen dat het een resultset betreft :)
@Blanche: Dat kan, maar ik moet de eerste query nog tegenkomen die geen string is, evenals de eerste resultset die geen resource/resultset is. Vandaar dat ik voor die inhoud simpelweg $query, $result en $row gebruik. Die zijn zó generiek, daar valt verder geen eer aan te behalen.
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
include ("config.php");
if ( isset($_SESSION['login']) ) {
$sSql = " SELECT * FROM members WHERE naam = '". $_SESSION['login'] ."' ";
if(!$rResult = mysql_query($sSql)) {
trigger_error(mysql_error(). '<br /> in query: '.$sSql);
}
elseif(mysql_num_rows($rResult) == 0) {
trigger_error('geen records opgehaald met query: '.$sSql.'<br/>'.mysql_error());
}
else {
if(mysql_num_rows($rResult) == 1){
$aRow = mysql_fetch_array($rResult);
echo 'Dit is het beveiligde gedeelte' .$aRow['naam'];
}
else {
echo ' geen rechten tot deze pagina';
}
}
?>
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
include ("config.php");
if ( isset($_SESSION['login']) ) {
$sSql = " SELECT * FROM members WHERE naam = '". $_SESSION['login'] ."' ";
if(!$rResult = mysql_query($sSql)) {
trigger_error(mysql_error(). '<br /> in query: '.$sSql);
}
elseif(mysql_num_rows($rResult) == 0) {
trigger_error('geen records opgehaald met query: '.$sSql.'<br/>'.mysql_error());
}
else {
if(mysql_num_rows($rResult) == 1){
$aRow = mysql_fetch_array($rResult);
echo 'Dit is het beveiligde gedeelte' .$aRow['naam'];
}
else {
echo ' geen rechten tot deze pagina';
}
}
?>
Kreeg net nog wat error, deze heb ik even verholpen maar aan deze geraak ik niet uit.
Parse error: parse error, unexpected $end in D:\Program Files\EasyPHP 2.0b1\www\membersysteem\test.php on line 24
Dank voor al jullie hulp ;-)
Joren
Edit:
Robert
je hebt op regel 10 nog een ) vergeten.
Verder moet volgens mij in het begin van het script de 2de if een elseif zijn kan dat ?
Robert
je hebt op regel 10 nog een ) vergeten.
Verder moet volgens mij in het begin van het script de 2de if een elseif zijn kan dat ?
Gewijzigd op 01/01/1970 01:00:00 door joren vh