Skocz do zawartości
  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

DavQ4strike

Sprawdzanie id [url] porownywanie sesji i rekordu bazy

Promowane odpowiedzi

DavQ4strike    2

Witam,

Mam pewne pytanie, otóż jak zrobić aby po wejściu na xxx.php?aaa?id=yyy pobierało dane z tabeli którą wyznaczę lecz porównywało id sesji z zapisem w bazie z tabela autor i dopuero wtedy ujawnialo tresc.

        if(isset($_GET['id']) && ($_SESSION['user_id']) == $dane['autor'])

Cos w tym stylu czyli, mam newsa napisal go id 1 w tabeli mam autor 1 i gdy ktos wchodzi na link tego newsa sprawdza czy jest n zalogowany jako dany user (autor) i pokazuje treśc jeżeli tak.

Prosiłbym o jakąś pomoc

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
TYGRYSEK    2

Nie wiem czy o to Ci chodzi, ale musisz porównać id użytkownika do id autora wpisu następnie przed wyświetleniem tego newsa musisz właśnie wprowadzić to porównanie no i jak jest takie samo to wyświetla a jak nie to nw jakieś przekierowanie albo coś ...

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
sgan    24

Raczej zrobiłbym to tak, że najpierw dał if($_GET['id']), a dopiero w nim if($_SESSION['user_id'] == $dane['autor']), na przykład:

if($_GET['id']) {
	if($_SESSION['user_id'] == $dane['autor']) {
		//wyswietla wyniki
	} else {
		//wyrzuca blad czy cos
	}
} else {
	//brak id czegoś, w przypadku newsów, brak $_GET['id'] powinno powodować wypisanie wszystkich
}

Ale nie jestem pewien czy o to ci chodzi.. Sprecyzuj problem.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
DavQ4strike    2

Ok poradziłem sobie z tym, zapomniałem o dodaniu w zapytaniu where=autor :>

Teraz inny problem:

<?php
if(isset($_GET['zrob']) and  ''.$dane['autor'].'' == $user ||  ''.$dane['user_group'].'' == 'Administrator' ||  ''.$dane['user_group'].'' == 'Moderator')
{
	$user = $_SESSION['user_id'];
	$zrob=$_GET['zrob'];
mysql_query("DELETE FROM news WHERE id='$zrob'");
}

Problem w tym, że gdy user_group = Administrator/Moderator to akcja się wykonuje lecz gdy rekord w bazie jest rowny $user to nie, a chodzi o to, że ma się wykonać jeśli $dane['autor'] jest równe $user lub jeśli $dane['user_group'] równa się z któraś z tych grup.

Ktoś wie w czym problem? zgaduję, że użyłem jakoś źle operatorów.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
sgan    24

Próbowałeś trochę ponawiasować?

if((isset($_GET['zrob']) && ''.$dane['autor'].'' == $user) || (''.$dane['user_group'].'' == 'Administrator' || ''.$dane['user_group'].'' == 'Moderator')) 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
DavQ4strike    2

<?php
if((isset($_GET['zrob']) and  ''.$dane['user'].'' == $user) ||  (''.$dane['user_group'].'' == 'Administrator' || ''.$dane['user_group'].'' == 'Moderator'))
{
	$user = $_SESSION['user_id'];
	$zrob=$_GET['zrob'];
mysql_query("DELETE FROM news WHERE id='$zrob'");
}

tsa, nie działa

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
sgan    24

Deklarację $user widzę dopiero po tym, gdy warunek zostanie spełniony, czy wcześniej gdzieś zostało to zrobione? Możliwe, że $user to po prostu null.

PS Masz SQL Injection w tym, ale to druga sprawa.. :)

Popróbuj różne opcje, najpierw usuń z warunków

||  (''.$dane['user_group'].'' == 'Administrator' || ''.$dane['user_group'].'' == 'Moderator')

i sprawdź, jeśli zadziała to problemem są właśnie operatory, jeśli nie to problem leży gdzieś indziej.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
DavQ4strike    2

Jeżeli dam $user == 1 to user o id 1 może wykonać tą akcję, jeżeli dam na grupę to grupa moze wykonac akcje ale sam user nie :<

zmienna $user zwraca id usera a $dane autor zwraca również id usera chodzi o to, że nie porównuję jakby tej pierwszej części.

o sqli wiem ale najpierw funkcjonalnośc później można wyłączyć znaki specjalne w urlu:>

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
sgan    24

Ja to w takich przypadkach nie zastanawiam się tylko nieco skracam warunek i tworzę kolejny, na przykład:

if(isset($_GET['zrob']) and  ''.$dane['user'].'' == $user) {
    //kodzik
} else if(''.$dane['user_group'].'' == 'Administrator' || ''.$dane['user_group'].'' == 'Moderator') {
    //kodzik
} else {
    //inny kodzik
} 

Ale to tylko ja, jestem leniwy i nie lubię za długo nad czymś siedzieć. :P

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
DavQ4strike    2

Ja ewentualnie mogę dodać 2 if'y bo skrócić nie mogę ponieważ akcja ma się wykonać jeśli autor = id usera lub gdy grupa jest grupą administracyjną.

dodam jeszcze, że

"Zmienna $user = 3

Baza (autor) = 3" zwracają prawidłowy wynik

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
sgan    24

Nie musisz edytować 2 razy jakbyś albo:

A - zrobił to obiektowo i dodał metodę usuwania

B - po prostu wcześniej zrobił funkcję usuwania.

function del() {
   $user = $_SESSION['user_id']; 
   $zrob=$_GET['zrob']; 
   mysql_query("DELETE FROM news WHERE id='$zrob'");
}

i wywoływał ją przy spełnionym którymś z warunków.

Nie jestem profesjonalistą i szczerze mówiąc mało mnie obchodzi jak wygląda kod jeśli działa.. :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
DavQ4strike    2

No właśnie ten mój też powinien działac, wcześniej zrobiłem warunek:

if (''.$wiersz['user'].'' == $user ||  ''.$dane['user_group'].'' == 'Administrator' ||  ''.$dane['user_group'].'' == 'Moderator') {
        if(isset($_GET['id']))

Który działa a teraz taki:

if (''.$wiersz['autor'].'' == $autor ||  ''.$user_data['user_group'].'' == 'Administrator' ||  ''.$user_data['user_group'].'' == 'Moderator') {

if(isset($_GET['zrob']))

[/code

i on nie działa :>

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

×