oriolrius.cat

Des del 2000 compartiendo sobre…

Category: Development, Models and Methodologies

PHP 5 ja no portara suport natiu de MySQL

Reading time: 1 – 2 minutes

Pues tal i com diu al titular, php5 a diferència de les anteriors ha
canviat el support natiu (llibreries i tal) de MySQL per a SQLite.

Degut a que MySQL a partir de la versió 3.28 cap endevant ha canviat
la llicència per a GPL. De manera que si tu vols fer una
aplicació en la que es fa servir MySQL i en la mateixa entregues MySQL
has de entregar també el teu codi font (abans tenia una licència
LGPL). Si igualment vols fer servir la aplicació amb MySQL pero no vols
tenir llicència GPL el que tens que fer es pagar la llicència de
MySQL ( uns 1200€ ) a MySQL AB.

Es per això que ara PHP5 portarà suport a SQLite, que no
és ni tan sols un servidor de base de dades, es una llibrería on
tota la base de dades s’emmagatzema en un sol fitxer que pot arribar a ocupar
com a màxim 2Teres.

En questió de selects es bastant més rapid que MySQL i que
POSGRESS pero en canvi a l’hora de fer inserts es fins a 28 vegades més
lent que MySQL, a part de estar bastant restringit a l’hora de fer ALTER’s
(basicament no pot).

phpstack – A TCP/IP Stack and Webserver in PHP

Reading time: 1 – 2 minutes

Hi ha gent que realment es dedica a implementar coses, que són
més difícils d’explicar que de fer. Ja m’explicareu els que
entengueu com els fem entendre als que no entenen el titol de l’item…
difícil,eh! ho intentaré explicar:

Doncs es tracta d’un programa que implementa una pila de TCP/IP i un
servidor web amb el llenguatge de programació Perl. Però la
difícultat de comprensió del tema esta en que el PHP és un
llenguatge de pre-procés de pàgines web, per tant al mateix temps
ja corre en un servidor web que té una pila de TCP/IP implementada en el
sistema operatiu que té sota seu.

Què com ús heu quedat? espero que algú hagi entès
algo 😉 si voleu veure la web amb el codi: phpstack. Si voleu
provar el servidor web funcionant, podeu connectar aquí.

Processos per lots de DOS (famós .bat)

Reading time: < 1 minute

Tots hem fet alguna parideta en un fitxer .bat sobretot quan voliem fer anar
algun joc que necessitava carregar memoria extesa i tal… quins temps eh? el
famos Autoexec.bat….

Bé buscant buscant he trobat un link prou interessant que explica com
fer arxius .bat una mica més complexos. Tot i que el tema està
una mica obsolet, no esta de mes una mica de culturilla general.

el link el podeu veure aqui:
http://www.iesromerovargas.net/sol/22msdos.htm

Introducció al Python

Reading time: < 1 minute

Doncs últimament el llenguatge de moda és el Python, malgrat
la furia del PHP segueix i els conceptes són diferents. El zope un
servidor d’aplicacions programat en python està agafant molta
força sobre tot als països ‘desenvolupats’ no com el nostre…

Doncs bé a mi personalment ni m’interessa ni tinc ganes d’aprendre
python. Però degut a certs projectes q portem a l’empresa m’interessa
tenir-ne nocions i per casualitat llegint la Cat-Hack (la revista d hacking en
català) vaig trobar un capítol q feia una introudcció
sobre aquest llenguatge.

Per si algú hi vol donar un cop d’ull:

Introducció al
llenguatge Python

PHP: Scanner de ports

Reading time: 2 – 3 minutes

Donant voltes per la Linux Security vaig trobar la referència d’un
document molt curiós, es tracta d’implementar un scanner de ports en
PHP, de fet el document comenta com d’un scanner de ports fet en C s’extreu el
codi en PHP.

L’article sencer esta a la web de PHPWizard i és titula: “Securing Servers
With PHP” però no tinc el link a mà.

Per si algú encara no ha vist q ens pot permetre fer això, doncs
penseu q podriem fer un scaner de ports a un site
des de la IP de qualsevol servidor PHP sense mostrar la nostra IP, seria com
tenir un scaner de ports online q no revela la nostre identitat 😉

Doncs per si algú necessita el codi urgent aquí va:



// port.php,v 1.3 2001/08/21 19:54:19 barce Exp
//
// A basic port scanner written in PHP.
//

/****************************************
* *
* $min is the first port scanned *
* $max is the last port scanned *
* *
****************************************/

$timeout = 1; // Use a timeout with a short duration
if ($pressed)
{
set_time_limit(0);
echo “Scanning $target” . “…
n”; flush();
for ($i = $min; $i <= $max; $i++)
{
/*********************************************************
* *
* Open a Socket Connection with fsockopen *
* *
*********************************************************/
$handle = fsockopen($target, $i, $errno, $errstr, $timeout);

/*********************************************************
* *
* Test connection to see if port is open *
* *
*********************************************************/
if (!$handle)
{
echo “No connection at port $i
n”; flush();
} else {
echo “Open port at $i
n”; flush();
fclose($handle);
}
}
} else {

/*********************************************************
* *
* A form to ask user for a host to target *
* *
*********************************************************/
echo “

n”;
echo “Host to portscan: “;
echo “
n”;
echo “Starting port number: “;
echo “
n”;
echo “Ending port number: “;
echo “
n”;
echo “n”;
echo “n”;
echo “

n”;
}
?>

el problema del PHP v.4.2 i el metode POST

Reading time: 1 – 2 minutes

bé, com ja l’uri em va dir que el php 4.2 no accepta les variables
globals, per tot aquell que passava les variables per metode get o post no les
llegeix pq ja no permet fer-les servir

Per aixo, l’Uri es va currar un script per solucionar aixos:

Per al mètode POST:

reset($HTTP_POST_VARS);

while(list($clave,$val)=each($HTTP_POST_VARS)){

$$clave=$val;

}

?>

i per al mètode GET:

reset($HTTP_GET_VARS);

while(list($clave,$val)=each($HTTP_POST_VARS)){

$$clave=$val;

}

?>

apa.

libPHP – Més llibreries pel PHP

Reading time: 1 – 2 minutes

http://www.navegalia.com/hosting/00014/jspg/
Ahir em van parlar d’aquestes llibreries o sigui q avui he buscat
informació sobre q feien i qui les desenvolupava…

He vist q les esta desenvolupant un espanyol, pero lo millor, es q si ens
fixem en la seva ortografia esta clarisim q es un catalufo, pq aixo d’usar les
“ny” encomptes de les “ñ” el delata.
Basicament parlant de les llibreries son per fer unes abstraccions als accessos
a les bases de dades postgres i mysql tot i q ara tb estan desenvolupant el
odbc. La idea no esta malament, tot i q les phplib ja ho fan tot aixo i 40
coses mes. El problema d’aquestes es q son molt cutres, ja q ho fan tot a
partir de la informacio q s’afegeix a les pagines a la seccio de meta’s.
Pos res, un altre projecte q s’haura de seguir tot i q encara falta
força feia diria jo com pq es pugui tenir en compte el projecte.

PHP PAM Authentication

Reading time: 1 – 2 minutes

Com q dissenyar un sistema d’autenticació eficaç no resulta
tasca fàcil i sempre n’hi ha més d’un q és més
espavilat q tu. He decidit informar-me d com implementar un sistema
d’autenticació PAM a través de PHP.

Tal com m’imaginava això ja hi ha més d’un q ho havia pensat
abans així doncs, malgrat el tema esta una mica verd encara. Ja hi ha
algunes referències per informar-se deltema.

La pàgina oficial q jo he trobat sobre el tema és:

http://www.math.ohio-state.edu/~ccunning/pam_auth.html

tot i q a:

http://www.kernel.org/pub/linux/libs/pam/modules.html

tb hi ha molta informació sobre els moduls disponibles PAM, aquesta
informació és una mica més general q la del PHP
però ens pot ser molt útil per exemple pq l’autenticació
PAM vagi contra una base de dades mySQL o contra un sistema kerberos, etc.

PHP: Array d’objectes dins una classe

Reading time: 2 – 4 minutes

Després d molts dies amb el mateix error i donant voltes sobre el
tema i sense una solució clara, avui he aconseguit q em funciones…

El problema estava en q quan feia una classe q tenia un atribut format per
un array d’objectes d’una altre classe no primitiva al no contemplar els tipus
d variables en PHP tenia problemes d’incompatibilitat de tipus i coses
així.

A continuació adjunto un exemple molt simple on es veu com funciona el
tema.Si algú té alguna idea per millorar la fomra de guardar un
array d’objectes com a atribut dins una classe agraïria q m’ho fes saber.
Aquesta idea és molt útil a l’hora de fer catàlegs de
productes o families d’objectes geràrquiques.

Hi ha poca gent q usi la P.O.O. amb PHP, ja q no soporta moltes de les
funcionalitats de la mateixa però per projectes una mica grans és
útil posar-s’hi sino es fa difícil reaprofitar codi en moltes
ocasions.

L’exemple esta format per 3 fitxers:
Clase1.php3 : és una classe molt simple, amb només dos
atributs.
Clase2.php3 : és la classe q té com a atribut un array
d’objectes d la classe anterior.
test.php3 : fitxer d prova, crea un objecte d la Clase2 i afegeix
elements a l’atribut array de la Clase1.

Codi de la Clase1.php3:

class Clase1 {

var $dada1;
var $dada2;

function Clase1($pdada1=””,$pdada2=””) {
$this->dada1=$pdada1;
$this->dada2=$pdada2;
}

function setDada($pdada1=””,$pdada2=””) {
$this->dada1=$pdada1;
$this->dada2=$pdada2;
}

function getDada1() {
return $this->dada1;
}

function getDada2() {
return $this->dada2;
}

}

Codi de la Clase2.php3:

class Clase2 {

var $dato;
var $vector;

function Clase2() {
}

function setDato($pdato) {
$this->dato=$pdato;
}

function addVector($dada1,$dada2) {
$this->vector[“$dada1”] = new Clase1($dada1,$dada2);
}

function getVector($dada1) {
$a=$this->vector[“$dada1”];
return $a->getDada1();
}
}

Codi de la test.php3:

include(“Clase1.php3”);
include(“Clase2.php3”);

$test2 = new Clase2;

$test2->Clase2();
$test2->addVector(“test”,”testejant”);
$test2->addVector(“test2″,”testejant2”);
$test2->addVector(“test3″,”testejant3”);
$test2->addVector(“test4″,”testejant4”);

echo $test2->getVector(“test”);
echo “
n”;
echo $test2->getVector(“test2”);
echo “
n”;
echo $test2->getVector(“test3”);
echo “
n”;
echo $test2->getVector(“test4”);