Archive for the ‘Programare’ tag
Ataşamente - PHP-Fusion V6
La cererea unui membru din comunitatea PHP-Fusion România am realizat o modificare la fişierele forum-ului pentru a permite ataşarea mai multor ataşamente.
La începutul aproape fiecărui fişier se găseşte variabila $atasamente. Este suficient să schimbi valoare acesteia (de default este 5) pentru a modifica numărul de ataşamente.
Pentru a aplica modificările trebuie doar să înlocuiţi toate fişierele din arhivă cu cele din folderul /forum.
Yahoo! Messenger Panel - PHP-Fusion v6
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.
Shutdown Uptime - C#
Am facut acest programel mai mult pentru a invata cateva lucruri noi.
Ce face?
Stinge calculatorul atunci cand ajunge la numarul n de minute de uptime. Il folosesc pentru fratele meu, astfel nu va sta tot timpul la calculator. Stiu ca exista sute de programe pe internet care fac acest lucru, dar am vrut sa ma ocup eu. Plus ca trebuia ceva foarte simplu pentru ca vor “lucra” si parintii mei cu el atunci cand eu nu sunt acasa.
In randurile urmatoare voi explica cum se face:
1. Deschideti un proiect C# si creati urmatoare interfata.

2. Cele 5 label-uri de sus le-am redenumit astfel:
- Label1 -> labelUptime;
- Label2 -> labelUptimeValue;
- Label3 -> labelEgal;
- Label4 -> labelUptimeValueHours;
Textbox-ul l-am redenumit textTime, iar butoanele buttonOK si buttonClose;
Am luat un Timer din Tool Box pe care l-am redenumit timer1. (default)
3. Acum sa trecem la partea de cod.
Pentru a prelua uptime-ul calculatorului trebuie sa folosim namespace-ul System.Runtime.InteropServices. Deci il vom adauga cu ajutorul comenzii (langa celelalte namespace-uri)
using System.Runtime.InteropServices;
Apoi scriem urmatorul cod:
public string UptimeValue = ""; //definim variabila UptimeValue
private void timer1_Tick(object sender, EventArgs e) //dand click pe timer1 vom afisa aceasta functie
{
int SystemUptime = Environment.TickCount; // variabila SystemUptime preia valoarea uptime-ului (in milisecunde)
this.labelUptimeValue.Text = Convert.ToString(SystemUptime / 60000) + " minutes"; //labelUptimeValue preia valoare uptime-ului (in minute) pentru a fi afisata in interfata programului
this.labelUptimeValueHours.Text = Convert.ToString(SystemUptime / 3600000) + " hours"; //labelUptimeValueHours preia valoarea uptime-ului (in ore) pentru a fi afisata in interfata programului
UptimeValue = Convert.ToString(SystemUptime / 60000); //UptimeValue preia valoarea uptime-ului pentru a fi folosita in program
if (this.UptimeValue == this.textTime.Text) //daca UptimeValue este egala cu valoare scrisa in texbox
{
System.Diagnostics.Process.Start("Shutdown", "-s"); //se va stinge calculatorul
}
}
Dupa ce dam click pe butonul Close scriem doar
this.Close();
Acum totul ar trebui sa mearga. Un programel creat in 10 minute cu doar 40 linii de cod.
Employee Management Studio - C#
O noua versiune a programului Employee Management Studio ( C# )despre care am scris aici.
Acum programul are 1242 linii de cod.

TurboPascal 7
Scriu acest post în special pentru colegii mei care mă tot întreabă de unde pot descărca Turbo Pascal 7 (pentru şcoală).
Îl puteţi descărca de aici. ![]()
Employee Management C#
În sfârşit am terminat programul Employee Management în C# pe care îl facem la cursuri. Peste câteva zile îl voi posta (nu sursa, doar fişierul .exe :P). În total are 901 linii de cod. Binişor pentru primul program în C# nu?
Mulţumiri lui Sabin.
Mai jos câteva screenshot-uri din program:





Test C# Aprilie 2008
Acesta este testul din C# pe luna Aprilie. Programul (sursele) pe care le-am făcut nu le voi publica…pentru moment
Download
La şcoală…
Astăzi o zi foarte grea. TImp total de stat la şcoală: 13 ore. Mai rău ca la servici…
Mai pe seară dacă nu uit, postez programul pe care l-am făcut la pregătire.
În sfârşit online…
În sfârşit am terminat de lucrat astăzi în C# pe Windows şi am reintrat pe Linux.
Acum m-am obişnuit cu Linux-ul şi îmi este greu să umblu pe Windows. Sper ca mâine să iasă totul bine la testul din C# ![]()
Securizarea infuziilor şi modificărilor în PHP-Fusion
Cu toţii ştim că securitatea unui portal PHP-Fusion este foarte importantă. În acest articol vrem să vă arătăm cum să creaţi modificări sau infuzii 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 PHP integrate în PHP-Fusion 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 PHP 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.php");
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.php");
- Puneţi acest cod la începutul fiecărui panou:
if (!defined("IN_FUSION")) { header("Location:../../index.php"); exit; }
- Puneţi acest cod la începutul – paginilor incluse? - :
if (!defined("IN_FUSION")) { header("Location:../index.php"); 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;