Toon posts:

Cookies

Pagina: 1
Acties:
  • 25 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo allemaal, graag wil ik mensen met $level > 0 adminrechten geven, en de rest niet. Deze codes bedacht:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
        
$level = mysql_query('SELECT LEVEL FROM users WHERE username = "Lucas"');
        
if ($level = 0)
{
print 'Je bent een normale gebruiker';
}
else
{
print 'Je bent een admin';
}
?>

Met deze tabel:
Tabel: users
Username:Level:
Lucas1
Lucas20



Maar dit werkt niet... Standaard wordt 'U bent een admin' weergeven. Dus ook als ik
code:
1
$level = mysql_query('SELECT LEVEL FROM users WHERE username = "Lucas"');

vervang door
code:
1
$level = mysql_query('SELECT LEVEL FROM users WHERE username = "Lucas2"');


Kan wel gewoon met de database verbinden, daar ligt het probleem dus niet.
Bovendien zou ik $level graag aan een cookie toe willen voegen, maar de volgende code werkt niet:
code:
1
2
3
$hour = time() + 3600; 
setcookie(ID_my_site, $_POST['username'], $hour, $level);
setcookie(Key_my_site, $_POST['pass'], $hour, $level);

Met de volgende foutmeldingen:
code:
1
2
Warning: setcookie() expects parameter 4 to be string, resource given in <...>
Warning: setcookie() expects parameter 4 to be string, resource given in <...>


Kan iemand mij aub met deze twee problemen helpen???

Mvg,
Lucas

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Paar dingen: $level is na de mysql_query een MySQL-resource, níet de waarde die jij wilt hebben. Die moet je nog met mysql_fetch_object, mysql_fetch_array of mysql_result zien te vissen uit je $level. (Dat geeft de setcookie()-foutmelding ook al aan.)

Ook is de '=' niet de correcte operator. $level = 0 wil zeggen: geef de variabele $level de waarde nul. En níet "kijk of $level de waarde nul heeft".

Verder zul je om ID_my_site nog wel quotes (' of ") moeten zetten, tenzij je ID_my_site ergens anders als constante hebt gedefined.

Ennuh, je level in een cookie storen? Wilde je daarna die cookie gaan gebruiken om te kijken wat voor security-level iemand heeft? Da's tof, dan heeft de meest lage gebruiker binnen no-time admin-rechten omdat ie zn cookie aangepast heeft _O-

[ Voor 38% gewijzigd door Osiris op 18-04-2007 19:51 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 30-11 15:10

Creepy

Tactical Espionage Splatterer

Je zult de PHP-MySQL docs er eens op na moeten slaan want mysql_query geeft niet direct het resultaat uit je query terug maar een (jawel) resource wat ook meteen je warning verklaart ;)

Pak de documentatie er gewoon even bij (of een willekeurige php-mysql tutorial) want daar staat prima in uitgelegd hoe je het resultaat van een query kunt opvragen.

En welkom op GoT overigens :)

[ Voor 4% gewijzigd door Creepy op 18-04-2007 19:50 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Ok, dat met die cookies is dus niet zo'n goed idee. Iets als dit bovenaan elke pagina zetten dus?

Dit is mijn tweede poging, met behulp van http://www.regnery.net/html/detail-php.php?id=63
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
        $query = 'SELECT LEVEL FROM users WHERE username = "Lucas2"';
        $resultaat = mysql_query ($query);
        while ($record = mysql_fetch_object($resultaat)){
 }
if ($record = 0)
{
print 'Je bent een normale gebruiker';
}
else
{
print 'Je bent een admin';
}
?>
Ook is de '=' niet de correcte operator. $level = 0 wil zeggen: geef de variabele $level de waarde nul. En níet "kijk of $level de waarde nul heeft".
Hoe doe je dit dan?
Het spijt me ik weet nog weinig van php af... :( :/

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Verwijderd schreef op woensdag 18 april 2007 @ 20:01:
Ok, dat met die cookies is dus niet zo'n goed idee. Iets als dit bovenaan elke pagina zetten dus?

Dit is mijn tweede poging, met behulp van http://www.regnery.net/html/detail-php.php?id=63
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
        $query = 'SELECT LEVEL FROM users WHERE username = "Lucas2"';
        $resultaat = mysql_query ($query);
        while ($record = mysql_fetch_object($resultaat)){
 }
if ($record = 0)
{
print 'Je bent een normale gebruiker';
}
else
{
print 'Je bent een admin';
}
?>



[...]

Hoe doe je dit dan?
Het spijt me ik weet nog weinig van php af... :( :/
PHP:
5
if($level == 0)

[ Voor 4% gewijzigd door Snake op 18-04-2007 20:13 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
        $query = 'SELECT LEVEL FROM users WHERE username = "Lucas"';
        $resultaat = mysql_query ($query);
        while ($record = mysql_fetch_object($resultaat)){
 }
if ($record == 0)
{
print 'Je bent een normale gebruiker';
}
else
{
print 'Je bent een admin';
}
?>

Nu geven "Lucas" en "Lucas2" beide 'normale gebruiker aan...'

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op woensdag 18 april 2007 @ 20:01:
Ok, dat met die cookies is dus niet zo'n goed idee. Iets als dit bovenaan elke pagina zetten dus?

Dit is mijn tweede poging, met behulp van http://www.regnery.net/html/detail-php.php?id=63
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
        $query = 'SELECT LEVEL FROM users WHERE username = "Lucas2"';
        $resultaat = mysql_query ($query);
        while ($record = mysql_fetch_object($resultaat)){
 }
if ($record = 0)
{
print 'Je bent een normale gebruiker';
}
else
{
print 'Je bent een admin';
}
?>
Ja en nee, je bent wel een stapje verder, maar 't is nog niet goed :P

Zo geeft mysql_fetch_object een object terug. Die kun je dus ook niet meteen gebruiken zoals je nu weer doet. Ik raad je mysql_result aan, al zullen er nog wel andere, die-hard-PHP-ers zijn die 't voor een of andere die-hard reden afraden. Voordeel vind ik dat je geen while-loop nodig hebt, want je hebt, als 't goed is, toch maar één result in je resource zitten.

Verder kun je op PHP.net ook een overzicht vinden van allerlei operators. Diegene die jij nu nodig hebt zijn de comparison operators.

Verwijderd

Topicstarter
Bedankt, ik ben al een heel groot stuk opgeschoten!

Slechts 1 vraag over:
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
<?
        
$con = mysql_connect("xxx", "xxx", "xxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

$db_selected = mysql_select_db("xxx", $con) or die(mysql_error());
        
        
        if(isset($_COOKIE['ID_my_site']))
{
$username = $_COOKIE['ID_my_site'];
$pass = $_COOKIE['Key_my_site'];
}
        
$sql = "SELECT level FROM users where username = '$username'";
$result = mysql_query($sql,$con);

echo mysql_result($result,0);
?>
<br />
<?
if($result == 0)
{
print 'U bent een normale gebruiker';
}
else
{
print 'U bent een admin';
}
?>

Hij geeft het level nu perfect weer (0 bij normale, 1 bij admins), maar antwoord altijd met 'U bent een admin.'
Blijkbaar werkt het volgende stukje niet helemaal naar behoren:
PHP:
1
2
3
4
5
6
7
8
if($result == 0)
{
print 'U bent een normale gebruiker';
}
else
{
print 'U bent een admin';
}

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 30-11 15:10

Creepy

Tactical Espionage Splatterer

Je echo'd nu de uitkomst van mysql_result maar daar doe je vervolgens niks mee. $result is nog steeds een resource (een link naar het resultaat van je query) en niet het veld level uit het resultaat van je query.

Ik wil niet heel vervelend zijn maar dit is wel redelijk basic PHP / MySQL kennis wat in een hoop tutorials wordt uitgelegd en eigenlijk gaan we er hier vanuit dat je dit soort zaken zelf zou moeten kunnen oplossen. Als je bijv. direct $result had geprobeerd af te drukken dan had je gezien dat dit een ander resultaat geeft. Ook als je de documentatie van mysql_result erbij had gepakt dan had je gelezen dat deze een waarde teruggeeft en niet een waarde aanpast in 1 van de gegevens parameters.

Pak er gewoon nog eens wat tutorials bij en ga ermee aan de slag. Voor PHP - MySQL zijn echt honderden tutorials te vinden die je perfect kunnen uitleggen hoe je een query stelt en hoe je het resultaat daarvan kan opvragen en gebruiken in PHP.

[ Voor 47% gewijzigd door Creepy op 18-04-2007 21:48 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.