Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  4 1168
Hei,

Sitter fast med noe jeg er ganske overbevist på at dere kan gi meg svare på ganske raskt.

Jeg holder på å lage en side hvor jeg benytter meg av et rettighets system. Rettighetene er samlet i en MySQL tabell i en kolonne som er en JSON kryptert array. Problemet mitt er at etter jeg har kryptert ("news"=>1,"applications"=>1) og satt den inn i databasen for deretter å trekke den ut igjen så er det ikke lengre en array, men et stdClass Object. Da jeg skal prøve å verifisere at brukeren har news på 1 så feiler den.

Jeg satte opp en liten test for å se hvor den blir til et stdClass Object:

Kode

<?php
$arr = array("news"=>1,"applications"=>1);
print_r($arr);
echo "<br />";
$arr = json_encode($arr);
print_r($arr);
echo "<br />";
$arr = json_decode($arr);
print_r($arr);
?>
Dette blir til:

Kode

Array ( [news] => 1 [applications] => 1 ) 
{"news":1,"applications":1}
stdClass Object ( [news] => 1 [applications] => 1 )
Hvorfor er det slik?


Dette er forøvrig funksjonen hvor det failer:

Kode

function check_rights($rights,$user,$db_name){
	$con = connect($db_name); // Benytter seg av en tidligere funksjon...
	$query = mysql_query("SELECT * FROM admins WHERE username='$user'");
	
	$row = mysql_fetch_assoc($query);
	$theright = $row['rights'];
	$theright = json_decode($theright);
	print_r($theright);
	if($theright["news"]!=0){
		echo $test;
	}	
}
Som igjen er brukt her:

Kode

check_rights("news",$active_admin,"exidas");
Dette er igjen slik tabellen i databasen ser ut:
http://content.screencast.com/users/Kristure/folders/Jing/media/85ebd781-12ad-4ad9-b91b-a471f19e6c15/2011-05-08_0331.png

Takk på forhånd for all hjelp
Ifølge dokumentasjonen av json_decode skal du sende inn true som andre parameter for å konvertere json-data til et assosiativt array!
Gjest
Trådstarter
5 0
Takk så mye. Det fungerte perfekt
Pekefinger/skjennepreken: Les alltid dokumentasjonen når du lurer på noe. PHP har (etter min mening) den beste dokumentasjonen av alle utviklingsplattformer, og da er det en skam å ikke bruke den. Man lærer utrolig mye bare ved å bla seg rundt der.
Det tok meg 30 sekunder å svare korrekt på dette spørsmålet uten å ha kodet noe PHP på 10 år - lenge før jeg noen gang hørte om json. Så ja, dokumentasjonen er bra og enkel å finne frem i. Men det er alltid lov å spørre også synes nå jeg da.

Update:
Det ble jammenmeg en bloggpost ut av dette spørsmålet her. Les det finnes ingen dumme spørsmål!