AlexxBlog.com


Colţul meu pe Internet

Archive for the ‘Infuzii’ tag

Yahoo! Messenger Panel - PHP-Fusion v6

without comments

Deşi am făcut-o acum 3-4 luni, tocmai acum câteva zile am publict-o.

Ce ştie să facă?

  • fiecare utilizator îşi poate adăuga ID-ul în baza de date pentru a cunoaşte noi prieteni;
  • dispune de o pagină personală unde vor fi afişate informaţiile precum: numele, data naşterii, ID-ul, oraşul şi o mică descriere;
  • ID-urile sunt sortate în funcţie de sex (băiat - fată);
  • un panou care afişează ultimele ID-uri adăugate pe categorie.

În arhivă am adăugat şi un panou care afişează pe orizontală 5 ID-uri selectate aleatoriu din baza de date.

Pe viitor aş vrea să o dezvolt şi pentru V7, vreau să îi fac un mic panou de administrare pentru opţiuni (ID-uri afişate pe pagină, culori, etc). Dacă aveţi ceva idei aştept comentarii.

Download | Topic PHP-Fusion România

Written by Alex

August 20th, 2008 at 1:03 pm

Posted in PHP-Fusion

Tagged with , , , , ,

Securizarea infuziilor şi modificărilor în PHP-Fusion

without comments

Cu toţii ştim că securitatea unui portal este foarte importantă. În acest articol vrem să vă arătăm cum să creaţi modificări sau fără greşeli.

1. Drepturile utilizatorilor:

Pentru a verifica drepturile membrilor şi grupurilor de membri folosiţi întotdeauna:

- constantele iGUEST, iUSER, iMEMBER, iADMIN, iSUPERADMIN, iUSER_RIGHTS, iUSER_GROUPS;

- funcţiile checkrights(), getuserlevel(), checkgroup(), groupaccess().

Exemplu:

if (iMEMBER) echo "Salut!";

else echo "Înregistrează-te!";

2. Interogări Mysql:

Folosiţi întotdeauna funcţiile integrate în pentru a interoga baza de date (Mysql):

- dbquery($query) - pentru a efectua un query mysql;

- dbrows($query) - pentru a cunoaşte numărul de rânduri dintr-un query mysql;

- dbcount($camp, $tabel, $conditii) – Afişează suma valorilor câmpului ($camp) din tabel ($tabel) în funcţie de condiţiile puse ($conditii);

- dbresult($query, $camp) - afişează conţinutul câmpului ($camp) în funcţie de primul rând din $query;

- dbarray($query) – Inserează datele din $query într-un array asociativ;

- dbarraynum($query) – Inserează datele din $query într-un array poziţional;

Un exemplu:

// efectuez interogarea

$result = dbquery("SELECT * FROM ".$db_prefix."custom_pages WHERE page_id='$page_id'");

// Controlez ca interogarea să aibă cel puţin un rând

if (dbrows($result) != 0) {

// Pun rezultatele într-un array poziţional

$data = dbarray($result);

// Folosesc datele din array

echo $data['page_title'];

} else die("Eroare!");

Observaţie: Amintiţi-vă să optimizaţi interogările mysql. Server-ului nu îi va place să primească sute de interogări pentru fiecare sait ;)

3. $_POST şi $_GET:

- Folosiţi întotdeauna funcţia stripinput() pentru a vă apăra împotriva codurilor HTML şi periculoase atunci când doriţi să adăugaţi informaţii în baza de date.

Exemplu:

$data = stripinput($POST['']);

Această funcţie înlocuieşte anumite caractere cu „entities” (entităţi?) HTML. De exemplu ghilimele “ devin ”.

- Dacă variabila POST/GET trebuie să fie un număr folosiţi funcţia isNum(). Dacă un număr trimis este folosit într-un query mysql folosiţi acest cod înainte să puneţi ceva în tabelul mysql:

if (!isNum($_POST['numarul_meu'])) falback("index.");

Sau:

$numarul_meu = isNum($_POST['numarul_meu']) ? $_POST['numarul_meu'] : $numar_predefinit;

- Nu trimiteţi prin variabila GET informaţii importante precum parole.

- Încercaţi să lucraţi cu baza de date prin câmpuri ID. Sunt mai uşor de manipulat şi sunt mai siguri. Este mai uşor să stabiliţi dacă o valoare este un număr cu ajutorul funcţiei isNum() decât să elaboraţi un „string” (caractere?) şi să stabiliţi dacă este sigur sau nu.

4. Alte lucruri:

- Puneţi acest cod la începutul fiecărui script de administrare:

if (!checkrights("IP")) fallback("../index.");

- Puneţi acest cod la începutul fiecărui panou:

if (!defined("IN_FUSION")) { header("Location:../../index."); exit; }

- Puneţi acest cod la începutul – paginilor incluse? - :

if (!defined("IN_FUSION")) { header("Location:../index."); exit; }

- Verificaţi întotdeauna imaginile încărcate cu funcţia verify_image(). Amintiţi-vă că anumite browser-ere (Navigatoare web?) permit executarea anumitor scripturi .JS prin tag-urile HTML

- Nu abandonaţi e_notice_warnings (erorile?). Amintiţi-vă să declaraţi variabilele cu valori predefinite.

Un exemplu fără declarare:

$otherdata = 'a';

$data = array('b', 'c', 'd');

for ($i=0;$i)

if ($otherdata==$data[$i]) $result = "OK";

}

$final_result = $result;

Codul de mai sus va afişa o eroare: e_notice warning: Variable $result not defined at line XXX.

Scriptul de mai jos este cel corect şi nu va afişa nicio eroare:

$otherdata = 'a';

$data = array('b', 'c', 'd');

$result = "DEFAULT VALUE"; //acest rând rezolvă problema

for ($i=0;$i)

if ($otherdata==$data[$i]) $result = "OK";

}

$final_result = $result;

Written by Alex

March 29th, 2008 at 3:08 pm

Posted in PHP-Fusion

Tagged with , , , ,

Ce este şi cum creez o infuzie?

without comments

Ce este o infuzie?
Infuzia este un Plugin pentru . Se numeşte aşa deoarece cuvântul “plug” a fost înlocuit cu “fusion”, şi cuvântul “in” a fost mutat în faţă. De aici a ieşit cuvântul “infusion”, adică infuzie.

Cum pot creea o infuzie?
În primul rând trebuie să aveţi fişierul-sursă pentru o infuzie, numit infusion.. În acest fişier se află toate datele necesare funcţionării corecte unei .

Ar trebui să arate ca următorul cod:

/*---------------------------------------------------+
|  6 Content Management System
+----------------------------------------------------+
| Copyright © 2002 - 2008 Nick Jones
| http://www..co.uk/
+----------------------------------------------------+
| Lansat sub termenii si conditiile versiunii 2
| a Licentei Publice Generale GNU. Pentru detalii,
| cititi fisierul gpl.txt sau vizitati http://gnu.org
+----------------------------------------------------*/

if (!defined("IN_FUSION") || !checkrights("I")) { header("Location: ../../index."); exit; }

if (file_exists(INFUSIONS."infusion/locale/".$settings['locale'].".")) {
     include INFUSIONS."infusion/locale/".$settings['locale'].".";
} else {
    include INFUSIONS."infusion_title/locale/English.";
}

$inf_title = $locale['xxx100'];
$inf_description = $locale['xxx101'];
$inf_version = "1.0";
$inf_developer = "";
$inf_email = "";
$inf_weburl = "http://";

$inf_folder = "folderol_infuziei";
$inf_admin_image = "";
$inf_admin_panel = "";

$inf_link_name = $locale['xxx102'];
$inf_link_url = "";
$inf_link_visibility = "0";

$inf_newtables = 1;
$inf_insertdbrows = 0;
$inf_altertables = 0;
$inf_deldbrows = 0;

$inf_newtable_[1] = "tabel_nou (
camp1 SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
camp2 TINYINT(5) UNSIGNED DEFAULT '1' NOT NULL,
camp3 VARCHAR(200) DEFAULT '' NOT NULL,
camp4 VARCHAR(50) DEFAULT '' NOT NULL,
PRIMARY KEY (camp1)
) TYPE=MyISAM;";

$inf_insertdbrow_[1] = "tabel_nou (camp1, camp2, camp3, camp4) VALUES('', '', '', '')";

$inf_droptable_[1] = "tabel_nou";

$inf_altertable_[1] = "tabel_name ADD  …";

$inf_deldbrow_[1] = "table_nou";
?> 

Pentru început, toate aceste informaţii vor fi greu de înţeles, dar pe parcurs veţi vedea că sunt uşor de reţinut.
Infuziile funcţionează după un sistem bine creat, astfel se pot introduce date în baza de date cu uşurinţă.

Ce înseamnă toate aceste variabile?

$inf_title = Numele infuziei.
$inf_description = Descrierea infuziei.
$inf_version = Versiunea infuziei.
$inf_developer = Dezvoltatorul infuziei.
$inf_email = E-mail-ul dezvoltatorului.
$inf_weburl = Saitul dezvoltatorului.

$inf_folder = Folderul în care se află fişierele infuziei.
$inf_admin_image = Iconiţa infuziei.
$inf_admin_panel = Legătura din panoul navigare.

$inf_link_name = Numele legăturii infuziei.
$inf_link_url = Legătura infuziei.
$inf_link_visibility = Acces infuzie: 0 - Vizitator / 101 - Membru / 102 - Administrator / 103 - SuperAdministrator.

$inf_newtables = Numărul tabelelor ce trebuie create în baza de date.
$inf_insertdbrows = Numărul câmpurilor ce trebuie create în tabele.
$inf_altertables = Numărul tabelelor ce trebuie modificate.
$inf_deldbrows = Numărul tabelelor ce trebuie şterse.

$inf_newtable_[1] = Pentru început este bine să folosiţi acel cod ca exemplu.

Cum foloseşte cod în ?
Pentru a face acest lucru trebuie să aveţi:
1. Un script care rulează corect;
2. Un script dezvoltat pentru ;
3. Un fişier infusion. care să includă toate variabilele necesare infuziei.

Deschideţi infusion.
Modificaţi toate variabile, iar la codul bazei de date este bine să folosim acel cod ca exemplu.
La începutul infuziei veţi găsi:

if (file_exists(INFUSIONS."infusion/locale/".$settings['locale'].".")) {
include INFUSIONS."infusion/locale/".$settings['locale'].".";
} else {
include INFUSIONS."infusion_title/locale/English.";
}

Înlocuiţi "infusion_title" cu folderul infuziei.

Cam atât!

Alex Dincu (@LEX),
România

Written by Alex

March 24th, 2008 at 10:23 pm

Posted in PHP-Fusion

Tagged with , , , ,