Violent Python A Cookbook For Hackers Forensic Ana
Violent Python A Cookbook For Hackers Forensic Ana
Módulo II:
El entorno PHP
Enteros
Los enteros se puede especificar usando una de las siguientes sintaxis:
$a = 1234; # número decimal
$a = -123; # un número negativo
$a = 0123; # número octal (equivalente al 83 decimal)
$a = 0x12; # número hexadecimal (equivalente al 18 decimal)
$a = 1.234; $a = 1.2e3;
Cadenas
Las cadenas de caracteres se pueden especificar usando uno de dos tipos de
delimitadores.
Si la cadena está encerrada entre dobles comillas ("), las variables que estén dentro
de la cadena serán expandidas (sujetas a ciertas limitaciones de interpretación).
Como en C y en Perl, el carácter de barra invertida ("\") se puede usar para
especificar caracteres especiales:
-ISIV- Pág. 7
Lenguaje de Programación Web
PHP – MYSQL – Módulo II
Caracteres protegidos
secuencia significado
\n Nueva línea
\r Retorno de carro
\t Tabulación horizontal
\\ Barra invertida
\$ Signo del dólar
\" Comillas dobles
\[0-7]{1,3} la secuencia de caracteres que coincida con la expresión regular es
un carácter en notación octal.
\x[0-9A-Fa-f]{1,2} la secuencia de caracteres que coincida con la expresión regular es
un carácter en notación hexadecimal.
$str = <<<EOD
Ejemplo de cadena
Expandiendo múltiples líneas
usando sintaxis de documento incrustado.
EOD;
Nota: La sintaxis de documento incrustado fue añadida en PHP 4.
Las cadenas se pueden concatenar usando el operador ’.’ (punto). Nótese que el
operador ’+’ (suma) no sirve para esto. Por favor mire Operadores de cadena para
más información.
Se puede acceder a los caracteres dentro de una cadena tratándola como un array
de caracteres indexado numéricamente, usando una sintaxis similar a la de C. Vea
un ejemplo más abajo.
-ISIV- Pág. 8
Lenguaje de Programación Web
PHP – MYSQL – Módulo II
<?php
/* Asignando una cadena. */
$str = "Esto es una cadena";
/* Añadiendo a la cadena. */
$str = $str . " con algo más de texto";
/* Otra forma de añadir, incluye un carácter de nueva línea protegido. */
$str .= " Y un carácter de nueva línea al final.\n";
/* Esta cadena terminará siendo ’<p>Número: 9</p>’ */
$num = 9;
$str = "<p>Número: $num</p>";
/* Esta será ’<p>Número: $num</p>’ */
$num = 9;
$str = ’<p>Número: $num</p>’;
/* Obtener el primer carácter de una cadena */
$str = ’Esto es una prueba.’;
$first = $str[0];
/* Obtener el último carácter de una cadena. */
$str = ’Esto es aún una prueba.’;
$last = $str[strlen($str)-1];
?>
Conversión de Cadenas
Cuando una cadena se evalúa como un valor numérico, el valor resultante y el tipo
se determinan como sigue.
La cadena se evaluará como un doble si contiene cualquiera de los caracteres ’.’, ’e’,
o ’E’. En caso contrario, se evaluará como un entero.
El valor viene dado por la porción inicial de la cadena. Si la cadena comienza con
datos de valor numérico, este será el valor usado. En caso contrario, el valor será 0
(cero). Los datos numéricos válidos son un signo opcional, seguido por uno o más
dígitos (que opcionalmente contengan un punto decimal), seguidos por un
exponente opcional. El exponente es una ’e’ o una ’E’ seguidos por uno o más
dígitos.
Cuando la primera expresión es una cadena, el tipo de la variable dependerá de la
segunda expresión.
-ISIV- Pág. 9
Lenguaje de Programación Web
PHP – MYSQL – Módulo II
Si quisiera probar cualquiera de los ejemplos de esta sección, puede cortar y pegar
los ejemplos e insertar
la siguiente línea para ver por sí mismo lo que va ocurriendo:
echo "\$foo==$foo; el tipo es " . gettype( $foo ) . "<br>\n";
$var_nombre = valor;
<?php
$txt="Hola Mundo!";
$x=16;
?>
-ISIV- Pág. 10
Lenguaje de Programación Web
PHP – MYSQL – Módulo II
<?php
$txt="Hola Mundo";
echo $txt;
?>
Hola Mundo
El operador de concatenación
<?php
$txt1="Hola Mundo!";
$txt2="Que tengas un buen dia!";
echo $txt1 . " " . $txt2;
?>
-ISIV- Pág. 11
Lenguaje de Programación Web
PHP – MYSQL – Módulo II
La función strlen ()
<?php
echo strlen("Hola Mundo!");
?>
12
El strpos () la función
La función strpos () se utiliza para buscar un personaje / texto dentro de una cadena.
Si se encuentra una coincidencia, esta función devolverá la posición del carácter de
la primera coincidencia. Si no se encuentra ninguna, devolverá FALSE.
Vamos a ver si podemos encontrar la cadena "mundo" en la cadena:
<?php
echo strpos("Hola Mundo!","Mundo");
?>
El ámbito de una variable es el contexto dentro del que la variable está definida. La
mayor parte de las variables PHP sólo tienen un ámbito simple. Este ámbito simple
también abarca los ficheros incluidos y los requeridos. Por ejemplo:
$a = 1;
include "b.inc";
Aquí, la variable $a dentro del script incluido b.inc. De todas formas, dentro de las
funciones definidas por el usuario aparece un ámbito local a la función. Cualquier
-ISIV- Pág. 12
Lenguaje de Programación Web
PHP – MYSQL – Módulo II
variable que se use dentro de una función está, por defecto, limitada al ámbito local
de la función.
Por ejemplo:
$a = 1; /* ámbito global */
Function Test () {
echo $a; /* referencia a una variable de ámbito local */
}
Test ();
Este script no producirá salida, ya que la orden echo utiliza una versión local de la
variable $a, a la que no se ha asignado ningún valor en su ámbito. Puede que usted
note que hay una pequeña diferencia con el lenguaje C, en el que las variables
globales están disponibles automáticamente dentro de la función a menos que sean
expresamente sobreescritas por una definición local. Esto puede causar algunos
problemas, ya que la gente puede cambiar variables globales inadvertidamente. En
PHP, las variables globales deben ser declaradas globales dentro de la función si
van a ser utilizadas dentro de dicha función. Veamos un ejemplo:
$a = 1;
$b = 2;
Function Sum () {
global $a, $b;
$b = $a + $b;
}
Sum ();
echo $b;
El script anterior producirá la salida "3". Al declarar $a y $b globales dentro de la
función, todas las referencias a tales variables se referirán a la versión global. No hay
límite al número de variables globales que se pueden manipular dentro de una
función.
Un segundo método para acceder a las variables desde un ámbito global es usando
el array $GLOBALS propio de PHP. El ejemplo anterior se puede reescribir así:
$a = 1;
$b = 2;
Function Sum () {
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
Sum ();
echo $b;
Function Test () {
$a = 0;
echo $a;
$a++;
}
-ISIV- Pág. 13
Lenguaje de Programación Web
PHP – MYSQL – Módulo II
Esta función tiene poca utilidad ya que cada vez que es llamada asigna a $a el valor
0 y representa un "0". La sentencia $a++, que incrementa la variable, no sirve para
nada, ya que en cuanto la función termina la variable $a desaparece. Para hacer una
función útil para contar, que no pierda la pista del valor actual del conteo, la variable
$a debe declararse como estática:
Function Test () {
static $a = 0;
echo $a;
$a++;
}
Function Test () {
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
Test ();
}
$count--;
}
-ISIV- Pág. 14
Lenguaje de Programación Web
PHP – MYSQL – Módulo II
Operadores aritméticos
Operadores de asignación
Operadores de comparación
-ISIV- Pág. 15
Lenguaje de Programación Web
PHP – MYSQL – Módulo II
Operadores lógicos
(X == 5 | | y == 5) devuelve false
! No x=6
y=3
! (X == y) devuelve true
Sentencias condicionales
Muy a menudo, al escribir el código, que desea llevar a cabo diferentes acciones
para diferentes decisiones.
Puede utilizar instrucciones condicionales en el código para hacer esto.
La sentencia if
Utilice la sentencia if para ejecutar un código si una condición especificada es
verdadera.
Sintaxis
-ISIV- Pág. 16
Lenguaje de Programación Web
PHP – MYSQL – Módulo II
<html>
<body>
<?php
$d=date("D");
if ($d=="Fri") echo "Buen fin de semana!";
?>
</body>
</html>
Tenga en cuenta que no hay otra cosa .. .. en esta sintaxis. El código se ejecuta
sólo si la condición especificada es verdadera .
Sintaxis
if (condicion)
código a ejecutar si la condición es TRUE;
else
código a ejecutar si la condición es FALSE;
Ejemplo
<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
echo "Buen fin de semana!";
else
echo "Buen Dia!";
?>
</body>
</html>
Si más de una línea deben ser ejecutados si la condición es verdadero / falso, las
líneas deben estar encerrados entre llaves:
-ISIV- Pág. 17
Lenguaje de Programación Web
PHP – MYSQL – Módulo II
<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
{
echo "Hola!<br />";
echo "Buen fin de semana!";
echo "Nos vemos el lunes!";
}
?>
</body>
</html>
Sintaxis
if (condicion)
codigo a ejecutar si la condicion es TRUE;
elseif (condicion)
codigo a ejecutar si la condicion es TRUE;
else
codigo a ejecutar si la condicion es FALSE1;
Ejemplo1
<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
echo " Buen fin de semana!";
elseif ($d=="Sun")
echo " Que tengas un buen domingo!";
else
echo " Que tengas un buen dia!";
?>
</body>
</html>
-ISIV- Pág. 18
Lenguaje de Programación Web
PHP – MYSQL – Módulo II
Sintaxis
switch (n)
{
case label1:
código a ejecutar si n=label1;
break;
case label2:
código a ejecutar si n=label2;
break;
default:
código a ejecutar si n es diferente a label1 y label2;
}
Así es como funciona: En primer lugar tenemos una sola expresión n (con mayor
frecuencia una variable), que se evalúa una vez. El valor de la expresión se compara
entonces con los valores para cada caso en la estructura. Si existe una coincidencia,
el bloque de código asociado a ese caso se ejecuta. Utilice break para evitar que el
código se ejecute en el siguiente caso de forma automática. La declaración por
defecto se utiliza si no hay coincidencias.
Ejemplo
<html>
<body>
<?php
$x=1;
switch ($x)
{
case 1:
echo "Number 1";
break;
case 2:
echo "Number 2";
break;
case 3:
echo "Number 3";
break;
default:
echo "No number between 1 and 3";
}
?>
</body>
</html>
-ISIV- Pág. 19