• Welcome to Simple Machines Community Forum. Please login or sign up.

Dozvole za rad na programu, na osnovu privilegija iz Foruma

Started by PaunEsDur, August 08, 2011, 08:04:38 AM

Previous topic - Next topic

PaunEsDur

U okviru svog sajta http://www.paundurlic.com/ otvorio sam pre četiri godine forum http://www.paundurlic.com/forum.vlasi.srbije/index.php Radeci na njemu, a na osnovu svog programerskog iskustva stecenog na starom dobrom Clipperu i kasnije na MS Visual FoxPro, osmelio sam se da uradim nesto o cemu sam kao etnolog odavno sanjao:  da pokrenem on-line vlaski recnik, sa zeljom da se sa terena pokupi jos ono malo preostalih reci koje zive u narodnom secanju, buduci da je ovaj govor, posle blizu dva milenijuma, konacno na izdisaju.
Recnik,  jos u pelenama, moze se videti ovde:
http://www.paundurlic.com/vlaski.recnik/index.php

Mnogo sto-sta sam uspeo da resim, ali mi je ostalo ono najvaznije: da deo opcija »zatvorim« za obicne posetioce, i dopustim ih samo clanovima redakcije. A clanovi redakcije su osobe koje su se vec uclanile u postojeci forum, i tamo imaju odredjene privilegije. Baza recnika je MySQL i nalazi se na istom serveru gde i baza Foruma, i konekcija je potpuno ista. Nju cemo u ovom topiku nazvati baza_recnik a bazu foruma nazvacemo baza_forum.

Spisak registrovanih clanova foruma nalaze se u baza_forum, tabela smf_member, a privilegije su date u tabeli smf_membergroups, gde se u polju ID_GROUP privilegije pod r.br. x1, x2 i x3 odnose na članove redakcije, sa posebnom dozvolom za rad na rečniku.
Da bi član redakcije mogao da radi, mora da »uđe u kancelariju«, odnosno bude logovoan na forum.

Obraćam vam se sa molbom da mi pomognete da ugradim u php rečnika deo koda koji će uraditi sledeće:
- da ispita da li posetilac rečnika, koji je »krenuo« u neku »neovlašćenu« akciju , ima za to dozvolu, ili ne, i ako nema, da ga na to upozori i odvrati.

Unapred se zahvaljujem.
Treba ići za svojom epohom, ali šta ako ona greši?

Dzonny

Pozdrav.

Sve što pokušavaš da uradiš je moguće sa vrlo malo izmena u kodu rečnika.
Objašnjenje i primeri se nalaze ovde:
http://wiki.simplemachines.org/smf/How_to_use_the_SMF_user_system_outside_of_SMF
Ukoliko ne razumeš engleski ili ako se ne snađeš slobodno pitaj i pomoći ćemo ti što se tiče tačnih kodova koje bi trebao da upotrebiš.
U principu obavezno moraš prvo pozvati ssi.php fajl, a posle koristiti if (in_array(1, $user_info['groups']))
i još par kodova zavisno od toga da li korisnici treba da budu ulogovani itd.
Uglavnom obrati pažnju na How do I restrict access to certain areas of my pages? odeljak u dokumentu koji je linkovan iznad.

PaunEsDur

Quote from: Dzonny on August 08, 2011, 09:12:23 AM
Ukoliko ne razumeš engleski ili ako se ne snađeš ...

I jedno i drugo je "true", sa dodatkom da mi je i vreme "iscurelo", i da ga za onu uobičajenu poslasticu, zvanoj eksperimentisanje, više nemam. A što se tiče statusa korisnika, samo članovi iz grupe "redakcija" trebalo bi da budu logovoani na forum, ili bar ja tako mislim, jer mi se čini da je prekompliovano bez toga utvrditi ko je ko, kada "nelogovani" dodju na lokaciju sa rečnikom.   
Treba ići za svojom epohom, ali šta ako ona greši?

Dzonny

Dakle ovako.
Prvo trebaš pozvati ssi.php fajl, pomoću koda:
require_once('/path/to/forum/SSI.php');
Samo stavi pravu putanju do ssi.php fajla.

Nakon toga tamo gde pristup treba da imaju samo članovi iz x grupe, stavi:
if (in_array(1, $user_info['groups']))
{
echo'
<div>
Ono što treba da se zaštiti, tj sadržaj koji vide samo članovi grupe x
</div>';
}
else
{
echo 'Poruka za one koji nisu u grupi x.';
}


U prvoj liniji koda promeni "1" sa ID-om grupe o kojoj je reč. Koliko znam nije potrebno da stavljaš posebno kod koji će proveravati da li je član ulogovan ili ne, jer mora biti ulogovan da bi se proverilo kojoj grupi pripada, tako da bi ovaj kod bio dovoljan.

Ukoliko budeš imao problema prikači fajl koji treba editovati, i reci koji ti je ID grupe o kojoj je reč.

PaunEsDur

Probao sam sledece:
Na samom pocetku fajla "brisanje.php", koji se poziva iz glavnog menija, ubacio sam kod (isrped postojeceg ukljucenja fajla vezanog za razne jezike interfejsa):"

<?php
require_once("http://www.paundurlic.com/forum.vlasi.srbije/SSI.php");
include(
"langsettings.php"); 
?>

<html>
<head>
.....
</head>


i dobio sledeci odgovor:

Warning: require_once() [function.require-once]: URL file-access is disabled in the server configuration in /home/muzempe/public_html/vlaski.recnik/brisanje.php on line 2

Warning: require_once(http://www.paundurlic.com/forum.vlasi.srbije/SSI.php) [function.require-once]: failed to open stream: no suitable wrapper could be found in /home/muzempe/public_html/vlaski.recnik/brisanje.php on line 2

Fatal error: require_once() [function.require]: Failed opening required 'http://www.paundurlic.com/forum.vlasi.srbije/SSI.php'; (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/muzempe/public_html/vlaski.recnik/brisanje.php on line 2
Treba ići za svojom epohom, ali šta ako ona greši?

Dzonny

Kada pozivaš fajl treba tj njegova putanja, a ne url, dakle potrebna ti je lokalna putanja do fajla ssi.php oblika /putanja/do/fajla/. Kada to popraviš nećeš imati grešku. Putanju mi ne možemo znati, a ako nisi siguran pitaj host podršku da ti kaže tačnu putanju do tog fajla.

PaunEsDur

Da, potpuno ste u pravu!
Provera privilegija je proradila i deluje upravo onako kako sam zamisljao.
Uz jednu krupno "ali": sadrzaj stranice ka kojoj se "propusta" korisnik sa privilegijom, a koji se "vuce" iz MySQL baze - ne prikazuje ispravno UTF-8. Sve ostale strane on "ispravno" vidi, samo tu ne.

Evo koda:


<?
require_once("../forum.vlasi.srbije/SSI.php");
include("langsettings.php");
?>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Vlaski recnik - Vorbariu ruminesk - ispravke</title>
<link href="stil.css" rel="stylesheet" type="text/css">
<body bgcolor="#F8E8A0">

<?

if (in_array(14, $user_info['groups']))
   {
   echo 'Imas dozvolu za ispravke!';
   }
   else
   {
   echo 'Nemas dozvolu za ispravke';
   exit;
   }

?> 



Iz nekog razloga, direktive iz SSI.php "ignorisu" stanje koje nalaže


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">



Kako to da resim?
Treba ići za svojom epohom, ali šta ako ona greši?

Dzonny

Da li si stranicu sačuvao kao utf8? Preporučujem ti da korsistiš notepad++ gde moraš obeležiti Encoding - Encode in utf8. U krajnjem slučaju možeš staviti i utf8 without BOM.
Da li ti se u ssi_examples.php fajlu, to jest na toj stranici prikazuju regulardno utf8 karakteri?
Zapravo, da li ti uopšte vučeš podatke preko ssi.php fajla koji prikazuju bilo šta na stranici, zar ne koristiš taj fajl samo za dozvole? :)

PaunEsDur

Quote from: Dzonny on August 09, 2011, 04:58:03 AM
Da li si stranicu sačuvao kao utf8?

Ako je u pitanju stranica SSI.php sa foruma - nisam nikada imao potrebe da je diram, dakle, takva je od njegove instalacije pa me cudi kako forum sa njom ovakvom radi savrseno po pitanju UTF8?

Quote from: Dzonny on August 09, 2011, 04:58:03 AM
Preporučujem ti da korsistiš notepad++ gde moraš obeležiti Encoding - Encode in utf8. U krajnjem slučaju možeš staviti i utf8 without BOM.

Ucitao sam je u notepad i, da, bila je ANSI pa sam je snimio u UTF-8. Ali, na zalost, ne deluje: stranice na "recniku" su i dalje van UTF-8 standarda!

Quote from: Dzonny on August 09, 2011, 04:58:03 AM
Da li ti se u ssi_examples.php fajlu, to jest na toj stranici prikazuju regulardno utf8 karakteri?

Ne znam kako to da proverim, ali, s druge strane, koliko sam mogao da vidim, u njoj i nema niceg izvan cistog ASCII-ja?!

Quote from: Dzonny on August 09, 2011, 04:58:03 AM
Zapravo, da li ti uopšte vučeš podatke preko ssi.php fajla koji prikazuju bilo šta na stranici, zar ne koristiš taj fajl samo za dozvole? :)

Koliko sam shvatio, ove intervencije sa SSI.php sluze samo radi provere dozvole!
Ja sam u stranicu "brisanje.php" i "ispravke.php" ugradio deo koda koji sam vec citirao u gornjoj poruci, ali cu ga ponoviti:


<?
require_once("../forum.vlasi.srbije/SSI.php");
include("langsettings.php");
?>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Vlaski recnik - Vorbariu ruminesk - ispravke</title>
<link href="stil.css" rel="stylesheet" type="text/css">
<body bgcolor="#F8E8A0">

<?

if (in_array(14, $user_info['groups']))
   {
   echo 'Imas dozvolu za ispravke!';
   }
   else
   {
   echo 'Nemas dozvolu za ispravke';
   exit;
   }

?> 



To je sve, pa kontam ovako:
Posto se neovalsceni posetilac udaljava sa stranice preko "exita", "privilegovani" ostaje na njoj, gde ga u narednom delu stranice ceka html-php kod preko koga se ostvaruje kontakt sa MySQL bazom, crtanje tabela, i "echovanje" procitanog sadrzaja iz pojedinih polja MySQL. Svi html tagovi su UTF-8 korektni, sem tog sadrzaja koji je u nekom "levom" charsetu ...

Da li se, recimo, posle provere privilegija, moze nekako "exludovati" ovaj SSI.php?! :)

Treba ići za svojom epohom, ali šta ako ona greši?

Dzonny

Biće da sada ima neki problem u ssi.php fajlu kod tebe:
QuoteNotice: SSI.php није могао да учита сесију! Ово може проузроковати проблеме приликом одјављивања или коришћења других функција - осигурајте да SSI.php буде увршћен пре *било чега* у вашој скрипти! in /home/muzempe/public_html/forum.vlasi.srbije/SSI.php on line 166
Inače, ssi_examples stranica pokazuje utf8 karaktere, tako da je encoding tu ok, dakle nije dobar u tvojoj custom php/html stranici u koju vučeš podatke.
probaj da staviš ovo unutar php koda:
header('Content-type: text/html; charset=UTF-8') ;

PaunEsDur

Isprobao. Nema efekta, na žalost. Ako

header('Content-type: text/html; charset=UTF-8');

stavim na sam početak stranice, sve je isto kao i pre, a ako ovu liniju dodam negde u php posle zaglavlja

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

javlja gresku

Warning: Cannot modify header information - headers already sent by ...

i ide dalje, bez osvrta na UTF-8!

PS. Ukoliko nesto nije u redu sa SSI.php na mom forumu, kako onda forum radi besprekorno?!?
Treba ići za svojom epohom, ali šta ako ona greši?

Dzonny

Možeš li da prikačiš ovde celu stranicu (kao attachment) koju edituješ tj tu stranicu koja prikazuje taj rečnik?
SSI.php fajl ne trebaš uopšte da menjaš, da li si ga ti menjao možda sada, ili ranije? Ukoliko jesi, vrati originalan fajl iz instalacionog paketa, jer ja i dalje vidim error i na ssi.php stranici i na ssi_examples.php stranici.

PaunEsDur

Dakle, SSI.php nisam ni pipnuo, do malocas kada sam ga snimio kao UTF-8. Vratio sam stari fajl.
A kacim "brisanje.php", sa napomenom da cim mu iskljucim SSI.php, prikazuje UTF-8 normalno. Slican je slucaj i sa fajlom "izmene.php" kome sam, probe radi, dodao isto zaglavlje, i efekat je isti.
Treba ići za svojom epohom, ali šta ako ona greši?

PaunEsDur

Izgleda da je pravi krivac SSI.php na forumu http://www.paundurlic.com/forum.vlasi.srbije/index.php
Srecom, imam jedan taze smf forum, http://paundurlic.com/forum.vlaski.recnik/index.php koji sam otvorio sa namerom da tu okupim saradnike za rad na recniku, ali nisam dalje isao od registracije admin-a, da ne bih ljude, koje sam vec okupio kao saradnike na starom forumu, primoravao da se nanovo registruju. Uputio sam require_once na  njega, i sve je u najboljem redu! Mogu, dakle, problem da resim mucenjem saradnika sa duplom registracijom (da ne pominjem ostale lose aspekte takvog "izdvajanja" veoma aktuelne teme javnog rada na recnku u neki zapecak!), ili, sto bi bilo sasvim profesionalno, da nalegnem(o) na SSI.php i izlecim(o) ga od jogunstva.

Dakle, sta bi to moglo da mu se desi?
Oba smf-a su v. 1.1.14, s tim sto je onaj stari - krpljen sam bog zna koliko puta za ove cetiri godine!
Treba ići za svojom epohom, ali šta ako ona greši?

Dzonny

probaj da ubaciš originalan ssi.php fajl na stari forum.
Kao alternativu, možeš tablicu members importovati u novi forum, pa članovi neće morati da se registruju ponovo :)

PaunEsDur

Quote from: Dzonny on August 09, 2011, 08:41:14 AM
probaj da ubaciš originalan ssi.php fajl na stari forum.

Hm! Sam bog zna posle cetiri godine sta je (i gde je) original ssi.php starog foruma?!
A da prebacim ovaj zdravi SSI.php sa novog foruma?

Treba ići za svojom epohom, ali šta ako ona greši?

Dzonny

Mislio sam na originalni ssi fajl koji se nalazi u instalacionom paketu najnovijeg smfa, ali da možeš prebaciti i isti fajl iz novog foruma jer je on zapravo netaknut.

PaunEsDur

Prebacio sam sa novog foruma sva tri fajla: ssi.php, ssi_examples.php i ssi_examples.shtml.
Isto. Kada ukljucim putanju do novog foruma - radi sve ispravno, kada se vratim na stari forum, iako sada oba foruma imaju iste SSI-fajlove, stara pesma, UTF-8 nema pa nema.  >:(

Da li mozemo da zakljucimo da je problem u necem drugom, izvan SSI.php-a na starom forumu? Nikako mi se ne cini dobrim da cimam ljude amo-tamo, ponajvise zbog gomile tema, priloga, gradje i sl. materijala, koji se oko ove problematike nakupilo na starom forumu. Drugim recima, pre nego sto "bacim peskir u ring", hteo bih da budem siguran da je ucinjeno sve sto se moglo da se "kvar" otkloni!
Treba ići za svojom epohom, ali šta ako ona greši?

Dzonny

Probaj najpre ovaj fajl da vidimo ima li razlike što se utgf8 karaktera tiče?

PaunEsDur

Ista pesma, na žalost: sa putanjom na stari forum - ništa, sa putanjom na novi forum - sve je u redu!  :-X

PS. Da li možete da proverite da li je sada sve u redu sa SSI.php na forumu http://www.paundurlic.com/forum.vlasi.srbije/index.php?
Treba ići za svojom epohom, ali šta ako ona greši?

Advertisement: