Archive for March, 2008
Două forumuri - Extra forum
Pasul I - Crearea tabelelor în baza de date:
1. Vă duceţi la Paginile Personalizate ( Panoul de administrare -> Administrare conţinut -> Pagini personalizate );
2. Scrieţi un nume oarecare la Titlul paginii;
3. Introduceţi la Conţinut pagină următorul cod pentru a efectua modificările în baza de date:
$r= dbquery("CREATE TABLE `fusion_forums1` (`forum_id` smallint(5) unsigned NOT NULL auto_increment,
`forum_cat` smallint(5) unsigned NOT NULL default '0',
`forum_name` varchar(100) NOT NULL default '',
`forum_order` smallint(5) unsigned NOT NULL default '0',
`forum_description` text NOT NULL,
`forum_moderators` text NOT NULL,
`forum_access` tinyint(3) unsigned NOT NULL default '0',
`forum_posting` tinyint(3) unsigned NOT NULL default '0',
`forum_lastpost` int(10) unsigned NOT NULL default '0',
`forum_lastuser` smallint(5) unsigned NOT NULL default '0',
PRIMARY KEY (`forum_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
");
if ($r) {
echo " Tabelul fusion_forum1 a fost creat cu succes!!
";
} else {
echo " Eroare la crearea tabelului fusion_forum1!
";
}$r= dbquery("CREATE TABLE `fusion_forum_attachments1` (
`attach_id` smallint(5) unsigned NOT NULL auto_increment,
`thread_id` smallint(5) unsigned NOT NULL default '0',
`post_id` smallint(5) unsigned NOT NULL default '0',
`attach_name` varchar(100) NOT NULL default '',
`attach_ext` varchar(5) NOT NULL default '',
`attach_size` int(20) unsigned NOT NULL default '0',
PRIMARY KEY (`attach_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
");
if ($r) {
echo " Tabelul fusion_forum_attachments1 a fost creat cu succes!!
";
} else {
echo " Eroare la crearea tabelului fusion_forum_attachments1!
";
}
$r= dbquery("CREATE TABLE `fusion_posts1` (
`forum_id` smallint(5) unsigned NOT NULL default '0',
`thread_id` smallint(5) unsigned NOT NULL default '0',
`post_id` smallint(5) unsigned NOT NULL auto_increment,
`post_subject` varchar(100) NOT NULL default '',
`post_message` text NOT NULL,
`post_showsig` tinyint(1) unsigned NOT NULL default '0',
`post_smileys` tinyint(1) unsigned NOT NULL default '1',
`post_author` smallint(5) unsigned NOT NULL default '0',
`post_datestamp` int(10) unsigned NOT NULL default '0',
`post_ip` varchar(20) NOT NULL default '0.0.0.0',
`post_edituser` smallint(5) unsigned NOT NULL default '0',
`post_edittime` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`post_id`),
KEY `thread_id` (`thread_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
");
if ($r) {
echo " Tabelul fusion_posts1 a fost creat cu succes!!
";
} else {
echo " Eroare la crearea tabelului fusion_posts1!
";
}
$r= dbquery("CREATE TABLE `fusion_threads1` (
`forum_id` smallint(5) unsigned NOT NULL default '0',
`thread_id` smallint(5) unsigned NOT NULL auto_increment,
`thread_subject` varchar(100) NOT NULL default '',
`thread_author` smallint(5) unsigned NOT NULL default '0',
`thread_views` smallint(5) unsigned NOT NULL default '0',
`thread_lastpost` int(10) unsigned NOT NULL default '0',
`thread_lastuser` smallint(5) unsigned NOT NULL default '0',
`thread_sticky` tinyint(1) unsigned NOT NULL default '0',
`thread_locked` tinyint(1) unsigned NOT NULL default '0',
PRIMARY KEY (`thread_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
");
if ($r) {
echo " Tabelul fusion_threads1 a fost creat cu succes!!
";
} else {
echo " Eroare la crearea tabelului fusion_threads1!
";
}
$r= dbquery("CREATE TABLE `fusion_thread_notify1` (
`thread_id` smallint(5) unsigned NOT NULL default '0',
`notify_datestamp` int(10) unsigned NOT NULL default '0',
`notify_user` smallint(5) unsigned NOT NULL default '0',
`notify_status` tinyint(1) unsigned NOT NULL default '1'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
");
if ($r) {
echo " Tabelul fusion_thread_notify1 a fost creat cu succes!!
";
} else {
echo " Eroare la crearea tabelului fusion_thread_notify1!
";
}
$r = dbquery("INSERT INTO `fusion_admin` (
`admin_id` ,
`admin_rights` ,
`admin_image` ,
`admin_title` ,
`admin_link` ,
`admin_page`
)
VALUES (
'300', 'F', 'forums.gif', 'Forum1', 'forums1.php', '1'
);");
if ($r) echo "Tabelul fusion_admin a fost modificat cu succes!";
else echo "Tabelul fusion_admin nu a fost modificat!";
?>
4. Apăsaţi Previzualizare pagină.
Pasul II - Uploadarea noilor fişiere
1. Uploadaţi fişierele din ataşament în folderele lor.
Pasul II - Sfârşit
Aici un mic demo.
Atenţie!
1. Nu uitaţi să faceţi mai întâi o copie de siguranţă a bazei de date;
2. Nu am testat toate comenzile, dacă ceva nu merge vă rog să postaţi aici.
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;
Advanced Forum Index - Forum Avansat
Reflecţie în Galeria Foto - PHP-Fusion
Ce face? Mai jos aveţi un exemplu.
Instalare:
1. Dacă vreţi să folosiţi acest efect în orice secţiune a portatului urmăriţi următorii paşi:
1.1 Uploadaţi fişierul reflection.js în folderul principal al temei folosite (ex: themes/Similitude06/);
1.2 Intraţi în fişierul theme.php din temă (pe care o folosiţi) şi adăugaţi:
echo '<script type="text/javascript" src="reflection.js"></script>';
1.3 Înlocuiţi fişierul photogallery.php cu cel din ataşament. Modificările sunt pe rândurile 62, 128 şi 164.
Am introdus efectul la toate pozele, inclusiv albumele, deşi mi se pare destul de încărcat aşa.
Citiţi fişierul readme.html pentru mai multe opţiuni.De aici puteţi descărca arhiva.
Pentru a folosi efectul şi în alte secţiuni trebuie să adăugaţi următorul cod în tag-ul imaginii (<img>):
class="reflect ropacity66"
2. Dacă vreţi să folosiţi acest efect numai în galeria foto descărcaţi această arhiva (realizată de look).
Topic PHP-Fusion România - Deschide
Subtitrări în fişiere .avi - Linux Mint
1. Instalaţi transcode
1.1 Deschideţi un terminal şi scrieţi următorul cod:
sudo apt-get install transcode
2. Intraţi în directorul unde aveţi fişierul .avi şi subtitrare, deschideţi un terminal şi introduceţi următorul cod:
transcode -i videofile.avi -x mplayer="-sub subfile.xxx" -o outputfile.avi -y xvid
Unde:
- videofile.avi - este fişierul video;
- subfile.xxx - subtitrarea, xxx este extensie ei (.srt, .sub, etc);
- outputfile.avi - fişierul final.
Instalare GD Library pe Linux Mint
1. Deschidem un terminal şi tastăm:
sudo apt-get install php5-gd
2. Restartăm Apache tastând comanda:
sudo /etc/init.d/apache2 restart
Simplu, uşor, rapid ![]()
Indexare Google - 24 minute
Nici nu l-am deschis şi deja Google îmi indexează paginile imegiat. Articolul l-am postat la ora 9 şi a fost indexat după 30-40 minute. Super!
Instalare imprimantă Samsung SCX-4100 pe Linux Mint
1. Deschideţi un terminal şi copiaţi următorul cod:
sudo apt-get install libstdc++2.10-glibc2.2 libsane-dev sane sane-utils
Aceste comenzi vor descărca câteva pachete necesare pentru funcţionarea corectă a imprimantei.
2. Descărcaţi driver-ele pentru imprimantă de aici;
3. Deschideţi un terminal şi intraţi în directorul unde aţi descărcat driver-ele. De exemplu:
cd /home/install/samsung-scx-4100-printer
4. Dezarhivaţi arhiva luată de pe sait:
tar -xzf 20070725084555687_UnifiedLinuxDriver.tar.gz
5. Porniţi instalarea driver-elor:
sudo ./cdroot/Linux/install.sh
6. Se va deschide o fereastră. Citiţi cu atenţie ce scrie şi veţi instala cu succes imprimanta.
Mai multe găsiţi aici.
Ce este şi cum creez o infuzie?
Ce este o infuzie?
Infuzia este un Plugin pentru PHP-Fusion. 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.php. În acest fişier se află toate datele necesare funcţionării corecte unei infuzii.
Ar trebui să arate ca următorul cod:
/*---------------------------------------------------+
| PHP-Fusion 6 Content Management System
+----------------------------------------------------+
| Copyright © 2002 - 2008 Nick Jones
| http://www.php-fusion.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.php"); exit; }
if (file_exists(INFUSIONS."infusion/locale/".$settings['locale'].".php")) {
include INFUSIONS."infusion/locale/".$settings['locale'].".php";
} else {
include INFUSIONS."infusion_title/locale/English.php";
}
$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 PHP în Infuzii ?
Pentru a face acest lucru trebuie să aveţi:
1. Un script PHP care rulează corect;
2. Un script PHP dezvoltat pentru PHP-Fusion;
3. Un fişier infusion.php care să includă toate variabilele necesare infuziei.
Deschideţi infusion.php
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'].".php")) {
include INFUSIONS."infusion/locale/".$settings['locale'].".php";
} else {
include INFUSIONS."infusion_title/locale/English.php";
}
Înlocuiţi "infusion_title" cu folderul infuziei.
Cam atât!
Alex Dincu (@LEX),
PHP-Fusion România
Apache, PHP, mysql, phpmyadmin pe Linux Mint
Folosesc toate aceste pachete pentru a încerca toate modificările/infuziile pe care le fac pe localhost. Este mai comod şi mai rapid aşa, decât să uploadez tot timpul fişierul modificat pe server.
1. Instalare LAMP:
1.1 Deschideţi un terminal şi scrieţi acest cod:
sudo tasksel install lamp-server
2. Instalare Apache:
2.1 Scrieţi în terminal
apache2
Dacă primiţi această eroare
apache2: Could not determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName
scrieţi în terminal
sudo gedit /etc/apache2/httpd.conf
şi la sfârşitul fişierul adăugaţi
ServerName localhost
3. Instalare PHP:
3.1 Scrieţi în terminal
sudo apt-get install php5-cgi
4. Instalare mysql:
4.1 Scrieţi într-un terminal:
sudo apt-get install mysql-server mysql-client
5. Instalare myphpadmin:
5.1 Scrieţi într-un terminal:
sudo apt-get install phpmyadmin
Mai multe detalii aici.
