mercoledì 30 settembre 2009

Parsare o non parsare files come php

Mi sono trovato di fronte ad un grosso problema...

Dovevo far vedere dei files non php come php dal server in una sola cartella...ed ecco la soluzione:

Per tutti i files nella cartella:
<files *.txt>
AddHandler php5-script txt
</files>


Per un solo file:
<files nome_file.txt>
AddHandler php5-script txt
</files>


Poi dopo, con le impostazioni di un server, ho avuto il problema di non far parsare un XML...
<files *.xml>
AddHandler client-parsed .xml
</files>


Ecco fatto!

Tutto questo, va inserito nel file '.htaccess' nella cartella del server

venerdì 10 luglio 2009

Nascondere/mostrare gli elementi di una pagina

Dato che i miei colleghi ogni volta chiedono a me, perchè non si ricordano come fare...quindi...ecco qui!

Nascondere:

//JS normale senza effetti
document.getElementById('id_elemento').style.display = 'none';

//jQuery senza effetti
$('#id_elemento').css({display: 'none'});

//jQuery con effetto fade
$('#id_elemento').fadeOut();
$('#id_elemento').hide();


Mostrare:

//JS normale senza effetti
document.getElementById('id_elemento').style.display = 'block';

//jQuery senza effetti
$('#id_elemento').css({display: 'block'});

//jQuery con effetto fade
$('#id_elemento').fadeIn();
$('#id_elemento').show();

Effetto su input in stile Google

DDgEffect v1.0 jQuery Plugin


Qui la demo!

giovedì 9 luglio 2009

I migliori programmi free per sviluppare per il web

Parlando di sviluppare in JS e PHP ci sono un paio di cosucce che secondo me sono indispensabili:

Browser:
-Firefox

Debugger JS:
-FireBug

Editor:
-Eclipse

Framework JS:
-jQuery

Grafica:
-Gimp

Per ora con questi programmi...vado avanti tranquillo...
Sono benaccetti i consigli!

Decriptare codice js

Ci sono diversi tipi di offuscatori JS, ma purtroppo, il codice javascript deve essere decriptato per essere eseguito...

Vediamo un po i tipi di criptazione che trovo su google...


Ho scaricato la TRIAL version, e ho fatto offuscare una semplice funzione, questo è il risultato offuscato:

eval((function(x){var d="";var p=0;while(p4)d+=d.substr(d.length-x.charCodeAt(p+1)*96-x.charCodeAt(p+2)+3104-l,l);else d+="`";p+=4}}return d})("function alert_(asd){` '!` &!;}"))

per decriptarlo basta aggiungere un'alert subito dopo l'eval, così:

eval(alert((function(x){var d="";var p=0;while(p4)d+=d.substr(d.length-x.charCodeAt(p+1)*96-x.charCodeAt(p+2)+3104-l,l);else d+="`";p+=4}}return d})("function alert_(asd){` '!` &!;}")))

Nell'alert apparirà il codice decriptato.

Un'altro offuscatore che utilizza lo stesso metodo è questo

per ora non ne ho trovati altri, ma comunque, in moltissimicasi è possibile decriptare il codice solo analizzando un po lo script offuscato...

mercoledì 8 luglio 2009

Hack This Site - Realistic 2

Missione Realistica 2

Obbiettivo:
Accedere come admin nel'area privata di un sito pro-razzismo per eliminarlo

Come fare:
Guardando nel'html si nota un link che in pagina non si vede, copiare l'url e metterlo nel indirizzo, appariranno 2 campi: user e password
Ora si dovrà cominciare con un po di SQL Injection...
In pratica si dovrà fallare il login, i caratteri ch si usano, sono l'apice singolo(') e l'uguale, cercando in google troverete la teoria...un paio di test, e capirete

Qui la soluzione, ma prima provate!!!

Hack This Site - Realistic 1

Missione Realistica 1

Obbiettivo:
Portare la band 'Raging Inferno' tra i primi

Come fare:
Tramite firebug, modificare il valore di una delle option con un valore molto alto e cliccare su vota.

Hack This Site - JavaScript 7

Missione JavaScript 7

Come fare:
Analizzare con firebug il bottone di controllo, nel 'onclick' c'è un 'if' ecc. ci sarà una stringa che controlla se l'input è uguale a quella...

Hack This Site - JavaScript 6

Missione JavaScript 6

Obbiettivo:
Trovare la password in un file JS esterno

Come fare:
Cercare il file che include la funzione per il controllo della password, inserirlo nel'url, analizzare lo script e mettere assieme la password.

Qui il link al js, ma prima provate a trovarlo!!!

Hack This Site - JavaScript 5

Missione JavaScript 5

Obbiettivo:
Trovare la password che è 'offuscata'

Come fare:
O eseguite l'unescape della stringa nel JS o fate un'allert della variabile 'moo', tutto con il pannello di firebug.

Hack This Site - JavaScript 4

Missione JavaScript 4

Obbietivo:
Trovare la password, evitando i trabocchetti

Come fare:
Visualizzare l'html, e cercare la funzione che fa il controllo, non fatevi ingannare dalla riga prima del controllo...quindi o fate un'alert della variabile 'RawrRawr' o la cercate nel codice, scoprendone il valore.

Hack This Site - JavaScript 3

Missione JavaScript 3

Obiettivo:
Analizzare il js di controllo e passarlo

Come fare:
Analizzare il JS, vedrete che il controllo è fatto sul numero di caratteri, quindi, o vi mettete a fare il calcolo del numero di caratteri o mettere nella console di firebug le prime linee del JS e fare un'alert sulla variabile che farà il controllo, cioè 'moo'.
Trovato il numero, scrivere una password lunga quanto la cifra trovata.

Qui il codice per calcolare il numero, ma prima provate!!!

Hack This Site - JavaScript 2

Missione JavaScript 2

Obiettivo:
Disattivare il JS dal browser

Come fare:
Andare nelle opzioni del browser, trovare dov si attiva/disattiva il JS, disattivarlo ed entrare in pagina.

Cliccare sul link per completare la missione.

Hack This Site - JavaScript 1

Missione JavaScript 1

Obbiettivo:
Trovare la password in un controllo JS

Come fare:
Destro -> Visualizza sorgente pagina, a sto punto cercate il bottone che da l'invio, guardate che JS inizializza al click, e cercarlo nel'html.

Qui la funzione, ma prima provate!!!

Hack This Site - Basic 11

Missione Base 11

Obbiettivo:
Trovare la password nascosta chissà dove

Come fare:
Ricaricando la pagina più volte, vedrete cambiare il titolo della canzone...cercando su google, noterete che 1 cantante viene scritto più volte, non avendo protetto le cartelle, mettendo una qualsiasi lettera nel URL, vedrete le cartelle che ci sono sotto...
se avete trovato il cantante giusto, seguite le lettere del suo nome, aggiungendole all'indirizzo...

Esempio:
Cantante 'Max Pezzali'
http://www.hackthissite.org/missions/basic/11/m/a/x/

arrivati alla cartella senza sottocartelle, aggliungere '.htaccess' al'indirizzo, apparirà un'istruzione del server per nascondere una cartella, inseritela dopo l'url e vi uscirà una sccritta con un gioco di parole...

Tornate al'index della missione, noterete che la pagina non è 'php', inserite 'index.php' e troverete il campo dove inserire la password

martedì 7 luglio 2009

Hack This Site - Basic 8

Missione Base 8

Obiettivo:
Trovare la password in un file che non conosciamo tramite SSI

Come fare:
Il primo campo, dice di inserire il proprio nome, fatelo, e vedete che succede, questo script, crea in una cartella 'temp' un file con dentro il nome che avete inserito e il numero di caratteri...
L'estensione del file è 'shtml', se lo cercate, troverete un link alla apache fundation che vi spiegherà anche gli SSI (ServerSideIncludes)

Come esempio propongono questo:


che in pratica scrive in pagina la data locale.
Se avete correttamente eseguito la missione 7, ora saprete il comando da utilizzare per listare i files, cercate il modo di fare eseguire i comandi unix tramite SSI, ed è fatta, vi apparirà la lista dei files, mi raccomando, deve essere della cartella superiore, e saprete cosa fare!

Qui la soluzione, ma prima provate!!!

Hack This Site - Basic 7

Missione Base 7

Obbiettivo:
Scoprire la password in un file che non conosciamo

Come fare:
Ora le cose si fanno leggermente più interessanti...
Il primo campo seve per inserire l'anno e la pagina risultante è il calendario di quell'anno...
Il tutto è restituito dal comando 'cal' dei sistemi unix.
Cercando un po in internet, troverete la sintassi del comando e la sintassi della shell dei sistemi unix.
Fatto questo, dovrete trovare il comando adatto per listare i files di una cartella, e aggiungerlo all'input.
Sotto il calendario, apparirà la lista dei files, trovate quello giusto.

Qui la soluzione, ma prima provate!!!

Hack This Site - Basic 6

Missione Base 6

Obbiettivo:
Trovare la password scoprendo la strigha criptata sapendo la password finale

Come fare:
nel primo campo inserire una serie consecutiva di lettere e numeri, il risultato sarà la stringha criptata, così facendo, si trova l'algoritmo di criptazione.
A questo punto, crearsi un programmino che lo fa anche semplicemente in JS o mettersi alfabeto in mano e farlo manualmente

Un esempio di criptazione:
abcdefg -> acegikm

quindi:
a + 0 = a
b + 1 = c

dove i numeri sono la posizione della stringha...

Qui il JS per decriptare, ma prima provate!!!

Hack This Site - Basic 4

Missione Base 4

Obbiettivo:
Trovare la password

Cosa si impara:
manipolare input in post

Come fare:
Ci sono 2 modi di procedere, ma ve ne spiego uno, a mio avviso più comodo...

Il primo è modificare i dati in un input nascosto, cambiando la password attuale con una vostra, utilizzando firebug, procedere così:
Aprire il pannello di firebac, cliccare su analizza e spostarsi sul bottone che dice 'Send password to Sam', poco soppra c'è un campo nascosto contenente un'email, cambiarla cliccandoci soppra, e metterne un'altra, non serve sia vera o falsa...dare invio ed ecco la password...

Hack This Site - Basic 3

Missione base 3

Obbiettivo:
Trovare la password in un file esterno

Cosa si impara:
dati passati tramite form, e gestione di files non raggiungibili da link

Come fare:
Ora servitanno un paio di tools in più, come ad esempio Firebug per firefox; installato scrivere una stringa qualsiasi nel campo di testo e dare invio, successivamente aprire il pannello di firebug e attivare la scheda chiamata 'NET', trovare 'index.php' e controllare i dati passati in post, vi sarà il nome di un file, copiarlo e metterlo al posto di 'index.php' nella barra degli URL e troverete la password.

Hack This Site - Basic 1

Missione Base 1

Questa è la missione di base del sito...

Obiettivo:
Trovare la password nascosta.

Cosa si impara:
Vedere l'html di una pagina web

Come fare:
Se non conoscete l'html, meglio leggersi una guida veloce, almeno per sapere cosa si sta leggendo, fatto questo, click desto nella pagina -> visualizza sorgente pagina
A questo punto leggere un po di html e nascosta in un commento c'è la password.

venerdì 3 luglio 2009

Parsare un XML con clsParserXML

Parsare un file XML con questa classe è estremamente facile...

<?php
include ('clsParseXML.php');

$xmlparse = &new ParseXML;
$xml = $xmlparse->GetXMLTree('xmlfile.xml');

echo "<pre>";
print_r(
$xml);
echo
"</pre>";
?>


Qui la classe da scaricare

giovedì 2 luglio 2009

DdSlide v1.2 - Slide in salsa jQuery

Scusate se ci ho messo tanto...ma ecco la versione 1.2 di DdSlide

Change Log:
v1.2
- Add Vertical sliding direction
- Add stop sliding on click
- Add click bounce
v1.1
- Add stop sliding on mouse over
- Add slide direction
v1.0
- Release

Nel file allegato, c'è tutta la descrizione estesa e lo script...

Qui la demo!

mercoledì 1 luglio 2009

DdSlide v1.0 - Slide in salsa jQuery

Hallo!!!!

Ecco qui la mia classicina per creare uno slide dei contenuti senza sbalzi ne attese...

Molto facile da usare, basta creare un div di questo tipo:
<div id="test" speed='100' px='1' class="test" classslide="test_slide">0123456789-</div>


chiamare questa funzione:
$('#test').DdSlide();

Nel file allegato, c'è tutta la descrizione estesa e lo script...

Qui la demo!

martedì 30 giugno 2009

Limitare numero di caratteri di una stringa senza targliare le parole V2

Dopo la funzione fatta ieri, su idea di miei colleghi, l'ho migliorata, così che, caso la al carattere 'N' sia subito dopo uno spazio prima di una parola molto lunga, questo taglia la stringa allo spazio precedente.

$stringa_in_input = 'Http://Trash! il blog degli appunti digitali!';
function taglia($testo,$caratteri)
{
    if(strlen(trim($testo))>$caratteri)
    {
        if(strripos($testo,' ',-(strlen(trim($testo))-$caratteri)) <$testo,' '))
        {

            $testo = substr($testo,0,strpos($testo,' ',$caratteri)).'...';        

        }

        
        else

        
        {
            

            $testo = substr($testo,0,strripos($testo,' ',-(strlen(trim($testo))-$caratteri))).'...';        

        }
    }

    
    return
$testo;

}

echo
taglia($stringa_in_input,10);//Http://Trash!...

echo
taglia($stringa_in_input,20);//Http://Trash! il...

echo
taglia($stringa_in_input,30);//Http://Trash! il blog degli...

lunedì 29 giugno 2009

Limitare numero di caratteri di una stringa senza tagliare le parole

Ecco una cosa che viene sempre utile...

Se avete un testo troppo lungo, come ad esempio una news, e volete ridurla per metterla magari in homepage, ma senza tagliare a metà una parola...ecco il codice...


<?php
$numero_caratteri = 10;
$stringa_in_input = 'Http://Trash! il blog degli appunti digitali!';

if(strlen(trim($stringa_in_input))>$numero_caratteri)
{
    $testo = substr($stringa_in_input,0,strpos($stringa_in_input,' ',$numero_caratteri)).'...';
}
else
{
    $testo = $stringa_in_input;
}

echo $testo;
?>

sabato 27 giugno 2009

Utilizzare le immagini di servizi come altervista, evitando il blocco

Con questa funzione lunga poche righe, è possibile utilizzare immagini su siti esterni da quelli previsti dal servizio di storage utilizzato, come per esempio, Altervista.
<?php
//Apre un'immagine posta nella cartella 'img' figlia di quella in cui si trova lo script
$fp = fopen('img/'.str_replace('../','',$_GET['fp']),'r');
//Cicla fino a raggiungere la fine del file
while(!feof($fp))
{
//Scrivendo ciò che legge dal file
echo fread($fp,99999);
}
?>

L'immagine verrà richiamata così:
<img src="'http://iltuositosu.altervista.org/pagina_che_contiene_lo_script.php?fp="url_immagine.png'" />

venerdì 26 giugno 2009

Mini guida Php

Per iniziare

Il php.....il linguaggio magico!!!

Ecco come penso che sia sto linguaggio fantastico.....comunque....

per prima cosa.....assicuratevi di avere il packetto Apache/PHP/MySQL

io ora in locale(su window) uso XAMPP e su linux XAMPP

non vi sto a spiegare come fare ad installarlo, olto chiaro qui: http://www.apachefriends.org

ho sempre odiato le guide che cominciano cosma pultroppo, a cosa migliore....


<?php
/*questo commento
va su + linee*/
echo "Hello world!";//e questo solo su una
?>


ecco qui....il famoso "Hello world!"

cominciamo......

1. La base della base:

I tag per il php

Ci sono 3 metodi, li metto in ordine di preferenza personale:
<?php ?> -> il + classico

<? ?> -> molto utilizzato

<% %> -> i cosetti "Tag asp" che delimitano anche l'ASP, per essere utilizzati nel php deve essere abilitato nel php.ini del server.


Se posso dare un consiglio.....io userei il primo

2. I commenti

I commenti, sono cose che vi salvano il cervello, sopratutto quando riprendete in mano il codice dopo un po di tempo, o prendete in mano quello di un'altro, cominciate gia subito ad usarli.

I 2 modi di commentare:

/* */ -> commento multi linea
// -> commento mono linea

io anke se mono linea, lo metto sempre con quello multi linea...

3. L'indentazione del codice

La cosa che vi salva gli occhi metre la notte, stanco dal lavoro, devi finire un pezzo di codice, l'indentazione olto importante, aiuta nel trovare errori e a far manutenzione.

io personalmente uso questo metodo:


<?php
function ciccio()
{
//codice indentato
}
?>



altro metodo:

<?php
function ciccio(){
//codice indentato
}
?>



io evito con cura script non indentati.....senima o poi ci lascio gli occhi.

4. Apici doppi e singoli

La differenza olta, anche se non sembrerebbe, probabilmente x chi l primo approccio, non capirma ad una seconda lettura si capireglio:

" " -> apici doppi tutto quello al interno verra "interpretato", quindi se c'n mezzo una variabile, verra visto il suo valore
' ' -> apici singoli, quello al'interno verristo per quello ke
Esempi:

<?php

$variabile = "ciao!";

echo "Mario disse: $variabile";//Verrtampato: "Mario disse: ciao!"
echo 'Mario disse: $variabile';//Verrtampato: "Mario disse: $variabile"
?>



5. Le variabili

Le variabili, la parte + importante, senza di loro la programmazione non esisterebbe, ci servono x calcolare, ricordare e trasportare informazioni.

I nomi di variabili, sono sempre preceduti dal simbolo "$"(si legge dollaro), e possono cominciare per lettera maiuscola/minuscola o underscore "_", ma non per numero.

Alcuni esempi:


<?php
//Corretto
$Ciccio = "ciao";
$ciccio = "ciao";
$_ciccio = "ciao";

//Errato
$1989ciccio = "ciao";
?>



Cosa che potrebbe tornare molto utile, ominare una variabile dinamicamente, cio


<?php
$nome_var = "ciccio";
$valore_var = "ciao!!";

$$nome_var = $valore_var

echo $ciccio; //Stamperciao!!"
echo $$nome_var; //Stamperciao!!"
?>



6. Unire + variabili/stringhe

Per fondere 2 variabili o stringhe assieme, si usa il punto ".", in questo modo:


<?php
$v1 = "ciao";
$variabile = $v1." "."ciccio!";

echo $variabile;//Stamperciao ciccio!"
?>



7. Variable scope

Questo l cosetto "scopo delle variabili"

una variabile non globale, creata in una funzione, avralore solo in quella funzione.

esempio 1:

<?php
$a = "ciccio";
$b = "gandalf";
function stampa_a()
{
echo $a;
}
stampa_a();//Non stamperulla
echo $a;//Stamperciccio"
?>



esempio 2:

<?php
$a = "gandalf";
function stampa_a()
{
$a = "ciccio";
echo $a;
}
echo $a;//Stampergandalf"
stampa_a();//Stamperciccio"
?>



per ovviare a questo problema ci sono delle variabili speciali, chiamata "superglobali"

8. Variabili superglobali

Le variabili superglobali, sono delle variabili "speciali".

Le variabili superglobali sono:
$GLOBALS -> Contiene tutte le variabili a livello globale


<?php
$a = 2;
function cambia_a()
{
global $a;
$a = $a+1;
}
cambia_a();
echo $a;//Stamper
?>



$_GET -> Contiene le variabili contenute nel URI, cioe variabili settate dopo il "?" nel URL

<?php
//URL: http-trash.blogspot.com/search/?q=guida+php
//URI: q=guida+php

echo $_GET['pid'];//Stamper7"
?>


Le variaili GET soo limitate come numero di caratteri imposto dal server, sono utili per passare variabili in assenza di form per l'invio di dati.

$_POST -> Contiene le variabili inviate, di solito, da un form, con l'uso di socket o di ajax ossibile inviarli in assenza di form.
Si richiamano come per le variabili GET


$_SESSION -> Contiene i dati della sessione corrente, che possono essere "portate" fino alla fine della sessione (chiusura del browser)

<?php
session_start();//Se non impostati nel php.ini, ne deve precedere al uso di qualsiasi variabile di sessione
$_SESSION['var'] = "ciccio";
echo $_SESSION['var'];//Stamperciccio"
?>



$_SERVER -> Contiene le variabili del server e del "nvironment"

<?php
echo $_SERVER['HTTP_HOST'];//Stamperhttp-trash.blogspot.com"
echo $_SERVER['HTTP_REFERER'];//Stamperdigitaldaigor.blogspot.com"
echo $_SERVER['HTTP_USER_AGENT'];//StamperMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13"
?>



Ne esistono altre, ma le metter un altro post x comodit
$_COOKIE -> Contiene i cookie settati in precedenza

<?php
setcookie("nome_cookie","valore_cookie",time()+(60*60));
/*I primi 2 si capisce a che servono, e l'ultimo valore a scadenza in secondi del cookie,
time() prende il numero di secondi dal 1/1/1970, e ci aggiungo 60*60 cio ora,
quindi dopo 1 ora da ora il cookie nn sar valido!*/

echo $_COOKIE['nome_cookie'];//Stampervalore_cookie"
?>



9. Strutture di controllo

Sono cicli o condizioni, come, nel linguaggio corrente....il "SE", oppure "FAI QUESTO FIN CHE SUCCEDE QUEST'ALTRO" ecc.


<?php
//IF -> SE
$a = 1;

if($a == 1)//Se $a con valore 1 guale a 1, esegue quello tra le parentesi graffe
{
echo '$a guale a 1';
}

//ELSE -> SENO'
//Deve venire sempre dopo un IF
$a = 1;

if($a == 2)//Se $a con valore 1 guale a 2, esegue quello tra le parentesi graffe
{
echo '$a guale a 2';
}
else//Sensegue quello tra le parentesi graffe del else
{
echo '$a non guale a 2';
}

//ELSE IF -> OPPURE
$a = 1;

if($a == 2)//Se $a con valore 1 guale a 2, esegue quello tra le parentesi graffe
{
echo '$a guale a 2';
}
else if($a == 1)//Oppure se $a con valore 1 guale a 1, esegue quello tra le parentesi graffe
{
echo '$a guale a 1';
}
else//Sensegue quello tra le parentesi graffe del else
{
echo '$a non guale a 1';
}

//FOR ->Da quando, Fino a quando
for($i=0;$i<10;$i++)
{
echo $i."<br>";
/*
Questo stamperna serie di numeri dallo 0 al 9
quindi:
Esegui qullo tra le graffe da quando $i guale a 0 fino a quando inore di 10
*/
}

//FOREACH ->
$ciccio['a'] = "aaa";
$ciccio['b'] = "bbb";
$ciccio['c'] = "ccc";

foreach($ciccio as $key => $val)
{
echo '$ciccio['.$key.'] = '.$val."<br>";
/*
Questo l metodo, a mio parere,+ semplice per scorrere un arry, queto ciclo stamper
$ciccio[a] = aaa
$ciccio[b] = bbb
$ciccio[c] = ccc

Se si usa un array con chiavi non ordina o ordinabili, questo cicli lo scorre dal inizio alla fine,
dando a $key, il valore della chiav, e a $val il valore della variabile(inteso come elemento del array)
*/
}

//WHILE -> Fin quando la condizione rimane a TRUE
while($flag)
{
$i++;
if($i>6)
{
$flag = false;
}
/*Ripete il ciclo fin quando la condizione viene passata a false*/
}
//altro esempio
while($i < 8)
{
$i++;
/*Ripete il ciclo fin quando la condizione viene passata a false*/
}

//DO WHILE -> Fai questo fino a quando la condizione rimane a TRUE
do
{
$i++;
/*Questo permette di essere sicuri che il coclo fiene eseguito almeno una volta*/
}while($i < 6);


//SWITCH -> se questo fai questo, se quest'altro fai questo
switch($i)
{
case 0://Se $i guale a 0 fa
echo '$i guale a 0';//questo
case 1://Se $i guale a 1 fa
echo '$i guale a 1';//questo
case 2://Se $i guale a 2 fa
echo '$i guale a 2';//questo
}
/*In pratica dentico a una serie di else if, risparmiando un po di codice*/


//Per fermare i cicli usare il break;
while(1=1)//Ciclo infinito
{
$i++;
if($i>100)
{
break;
/*L'esecuzione verrerminata a $i=100*/
}
}
?>




10. Operatori di assegnazione, di incremento/decremento e di stringha


<?php
$b = "ciao";//L' "=" assegna il valore a $b

$b .= "!!!";//Fonde le 2 stringhe assieme, modo ridotto ed equivalente a; $b = $b."!!!";

$a = 5;
$a += 2;//$a vale 7, modo ridotto ed equivalente rispetto a questo: $a = $a+2;

$a = 5;
$a -= 2;//$a vale 3, modo ridotto ed equivalente rispetto a questo: $a = $a-2;

$a = 5;
$a++;//$a vale 6, modo ridotto ed equivalente rispetto a questo: $a = $a+1;

$a = 5;
$a--;//$a vale 4, modo ridotto ed equivalente rispetto a questo: $a = $a-1;
?>



10. Operatori di confronto


<?php
$a = 1;
$b = 2;
$c = 3;
$d = 1;
$e = "1";

//Uguale
if($a == $d)//StamperTRUE" -> (1 == 1)
{
echo "TRUE";
/*Esegue questo percha guale a $d*/
}
if($a == $c)//NON StamperTRUE" -> (1 == 3)
{
echo "TRUE";
/*Non esegue questo percha non guale a $c*/
}

//Identico
if($a === $d)//StamperTRUE" -> (1 === 1)
{
echo "TRUE";
/*Esegue questo percha dentico a $d nel valore e nel tipo*/
}
if($a === $e)//NON StamperTRUE" -> (1 === "1")
{
echo "TRUE";
/*Non esegue questo percha non dentico ad $e, dato che $a n intero e $e na stringha*/
}

//Diversi (!= oppure <>)
if($a != $c)//StamperTRUE" -> (1 != 3)
{
echo "TRUE";
/*Esegue questo percha iverso da $c*/
}
if($a != $d)//NON StamperTRUE" -> (1 != 1)
{
echo "TRUE";
/*Non esegue questo percha guale a $d*/
}

//Non identico
if($a !== $e)//StamperTRUE" -> (1 !== "1")
{
echo "TRUE";
/*Esegue questo percha non dentico a $e nel tipo*/
}
if($a !== $d)//NON StamperTRUE" -> (1 !== 1)
{
echo "TRUE";
/*Non esegue questo percha dentico a $d*/
}

//Maggiore
if($c > $a)//StamperTRUE" -> (3 > 1)
{
echo "TRUE";
/*Esegue questo perchc aggiore di $a*/
}
if($c > $c)//NON StamperTRUE" -> (3 > 3)
{
echo "TRUE";
/*Non esegue questo perchc non aggiore di $c*/
}

//Minore
if($a < $c)//StamperTRUE" -> (1 < 3)
{
echo "TRUE";
/*Esegue questo percha inore di $c*/
}
if($c > $c)//NON StamperTRUE" -> (3 > 3)
{
echo "TRUE";
/*Non esegue questo perchc non inore di $c*/
}


//Maggiore uguale
if($c >= $a)//StamperTRUE" -> (3 >= 1)
{
echo "TRUE";
/*Esegue questo perchc aggiore di $a*/
}
if($c >= $c)//StamperTRUE" -> (3 >= 3)
{
echo "TRUE";
/*Esegue questo perchc guale a $c*/
}
if($b >= $c)//NON StamperTRUE" -> (2 >= 3)
{
echo "TRUE";
/*Non esegue questo perchb non aggiore o uguale a $c*/
}

//Minore uguale
if($a <= $c)//StamperTRUE" -> (1 <= 3)
{
echo "TRUE";
/*Esegue questo percha inore di $c*/
}
if($c <= $c)//StamperTRUE" -> (3 <= 3)
{
echo "TRUE";
/*Esegue questo perchc guale a $c*/
}
if($c <= $b)//NON StamperTRUE" -> (3 <= 2)
{
echo "TRUE";
/*Non esegue questo perchc non inore o uguale a $b*/
}

?>



11. Operatori AritmeticoMatematici

La matematica nel php guale quella fuori dal php.

Esempi:

<?php
$a = 1;
$b = 2;
$c = 3;

//Addizione
$d = $a+$b;//$d = 3

//Sottrazione
$d = $a-$b;//$d = -1

//Moltiplicazione

$d = $a*$b;//$d = 2

//Divisione
$d = $a/$b;//$d = 0.5

//Modulo -> Restituisce il resto della divisione tra i 2 numeri
$d = $a%$b;//$d = 1
?>



12. Operatori logici

sono qui elencati e restituiscono true quando:
&& o and -> Entrambi sono veri
|| o or -> Almeno uno ero
xor -> Solo uno dei 2 ero
! -> Restituisce il contrario di quello che segue, se quello che segue RUE, restituirALSE


Esempi:

<?php
$a = 1;
$b = 2;
$c = 3;
$d = 1;
//AND o &&
if($a = $a and $b = $b)//StamperTRUE" -> (TRUE and TRUE)
{
echo "TRUE";
/*Esegue questo percha guale a $a e $b guale a $b*/
}
if($a = $a and $b = $c)//NON StamperTRUE" -> (TRUE and FALSE)
{
echo "TRUE";
/*Non esegue questo percha guale a $a ma $b non guale a $c*/
}

//OR o ||
if($a = $c or $b = $b)//StamperTRUE" -> (FALSE or TRUE)
{
echo "TRUE";
/*Esegue questo perchb guale a $b anche se $a non guale a $c*/
}
if($a = $c or $b = $c)//NON StamperTRUE" (FALSE or FALSE)
{
echo "TRUE";
/*Non esegue questo perchb non guale a $c e $a non guale a $c*/
}

if($a = $c xor $b = $b)//StamperTRUE" -> (FALSE xor TRUE)
{
echo "TRUE";
/*Esegue questo perchb guale a $b e $a non guale a $c*/
}
if($a = $c xor $b = $c)//NON StamperTRUE" -> (FALSE xor FALSE)
{
echo "TRUE";
/*Non esegue questo perchb non guale a $c e $a non guale a $c*/
}
if($a = $a xor $b = $b)//NON StamperTRUE" -> (TRUE xor TRUE)
{
echo "TRUE";
/*Non esegue questo perchb guale a $b e $a guale a $a*/
}

if(!($a = $a))//NON StamperTRUE" -> !(TRUE)
{
echo "TRUE";
/*Non esegue questo percha guale a $a*/
}
if(!($a = $b))//StamperTRUE" -> !(FALSE)
{
echo "TRUE";
/*Esegue questo percha non guale a $b*/
}
?>



13. Controllo degli errori

Avolte, non siamo si curi che quello che stiamo facendo vada a buon fine, quindi, per non dare brutti errori a schermo usiamo davanti alla funzione la "@"


<?php
//Qui userna funzione che vi spiegheri...non fateci caso, ma capite il meccanismo

include("file_che_non_esiste.php");
?>


Il file che ho cercato non esiste, quindi mi viene stampato questo errore:

Warning: include(file_che_non_esiste.php) [function.include]: failed to open stream: No such file or directory in W:\xampp\htdocs\www\index.php on line 2

Warning: include() [function.include]: Failed opening 'file_che_non_esiste.php' for inclusion (include_path='.;W:\xampp\php\pear\') in W:\xampp\htdocs\www\index.php on line 2


<?php
//Ma se metto la "@" davanti alla funzione.....nessun errore!!!

@include("file_che_non_esiste.php");
?>



14. Tipi di variabili

Le variabili si dividono in:
(int) o (integer) -> Numero intero
(bool) o (boolean) -> Boleano, cioRUE o FALSE
(float) o (double) -> Numeri a virgola mobile
(string) -> Stringhe alphanumeriche
(array) -> Array, cion contenitore di + variabili

Esempi:

<?php
$intero = 5;
$bool = true;
$float = 0.5;
$string = "ciccio";
$array = array("valore1", "valore2");
?>



Per forzare una variabile a prendere solo un tipo di dato, bisogna anteporre alla suddetta le parentesi con il tipo di dato:

Esempi:


<?php
$numero = 5;
$numero_t = (int)$numero;

//Con un successivo controllo si scopre che la variabile si rasformata
if(is_int($numero_t)){ echo "n intero"; }

/*Se una variabile con valore una stringha, contenente un numero, vedremo
che il numero rimane invariato, ma cambia il tipo di variabile*/

$numero = "5";
$numero_t = (int)$numero;
//Con un successivo controllo si scopre che la variabile si rasformata am il valore di $numero_t
if(is_int($numero_t)){ echo "n intero"; }
if(is_string($numero)){ echo "na stringha"; }

//in caso non ci fosse un numero ma delle lettere $numero_t varrebbe 0
$numero = "asd";
$numero_t = (int)$numero;
echo $numero_t;//Stamper0"
?>



Le funzioni per scoprire di che tipo a variabile sono:


<?php
is_int($var);
is_bool($var);
is_array($arr);
is_string($var);
?>



Tutte queste funzioni restituiranno TRUE se il tipo della variabile corrisponde.

ne esistono altre, ma le tratter'altra volta


15. Gli array

Gli array sono delle "variabili contenitore", cioontengono altre variabili o altri array e possono essere multidimensionali.

Esempi di array:

<?php
//Ci sono vari modi di creare un array:

$array1 = array();//Coso si crea ma non lo si popola
$array2 = array("ciccio","gandalf");//Cos' lo si crea e popola

//In questi si crea e si popola
$array3[] = "tizio";
$array3[] = "caio";

/*Negli array si possono dare anche key personalizzate
di norma un array comincia con l'elemento con key=0
e va aumentando, ma in questo modo potete dare key personalizzate*/

$array4['ciccio'] = "1";
$array4['pino'] = "3";

/*Questo tile sopratutto quando si hanno array multidimensionali, cio + livelli*/
$array4['persone'][] = array(['nome'] => "Ciccio", ['cognome'] => "Deamicis");
$array4['persone'][] = array(['nome'] => "Gandalf", ['cognome'] => "Il Bianco");

//Se volete sapere il cognome della 2 paersona...scriverete:
echo $array4['persone'][1]['cognome'];//StamperIl Bianco"

/*Per scorrere un array con chiavi personalizzate, senza che le sappiate, rimando al "foreach" nel capitolo "Cicli"

Se volete visualizzare la struttura di un array usate questa funzione:*/
print_r($array4);
?>



16. Funzioni personali

Le funzioni, servono ad automatizzare dei processi, e quindi non farvi riscrivere + volte lo stesso codice.
NOTA: Le variabili create dentro la funzione, non saranno presenti al esterno, l'unico modo per passarle sare il return


<?php

function funzione_personale($parametro1,$parametro2,$parametro3="ciccio",$parametro4=" ciao!!!")
{
echo $parametro1;
echo $parametro2;
echo $parametro3;
echo $parametro4;
global
}

/*Una funzione come questa qui sopra, ltamente inutile, ma serve a spieghere....
Come vedete ci sono 4 "parametri", cio variabili mandate nella funzione dal'esterno,
le prime 2 sono obbligatorie, senza la funzione da errore, ma le ultime 2
possono essere tralasciate, dato che hanno un valore di defoult.

ma se vi serve settare $parametro4, siete obbligati a settare anche $parametro3
*/

funzione_personale("dissi ","a ");
//Stamperdissi a ciccio ciao!!!"

funzione_personale("dissi ","a ","gandalf");
//e stamperdissi a gandalf ciao!!!"

?>