On Github MilkZoft / CursoPHP
Instructor: Carlos Santana / @czantany
Para Windows & Mac lo más sencillo es instalar un paquete que contenga todas las herramientas que necesitamos, algunas de ellas son: -EasyPHP (Windows) -MAMP (Mac) -WAMP (Windows) -XAMP (Mac & Windows)
sudo apt-get install php5 libapache2-mod-php5 mysql-server mysql-client apache2 php5-mysqli phpmyadmin sudo vi /etc/apache2/apache.conf Agregar la siguiente línea: Include /etc/phpmyadmin/apache.conf sudo vi /etc/phpmyadmin/apache.conf Agregamos "AllowOverride All" dentro de <Directory /usr/share/phpmyadmin> service apache2 restart
PHP soporta ocho tipos primitivos.
Determina si una variable está definida y no es NULL.
$var = ''; // Esto evaluará a TRUE así que el texto se imprimirá. if (isset($var)) { echo "Esta variable está definida, así que se imprimirá"; } // En los siguientes ejemplos usaremos var_dump para imprimir // el valor devuelto por isset(). $a = "prueba"; $b = "otraprueba"; var_dump(isset($a)); // TRUE var_dump(isset($a, $b)); // TRUE unset ($a); var_dump(isset($a)); // FALSE var_dump(isset($a, $b)); // FALSE $foo = null; var_dump(isset($foo)); // FALSE
Determina si una variable está vacía.
$var = 0; // Se evalúa a true ya que $var está vacia if (empty($var)) { echo '$var es o bien 0, vacía, o no se encuentra definida en absoluto'; } // Se evalúa como true ya que $var está definida if (isset($var)) { echo '$var está definida a pesar que está vacía'; } $str = ' '; var_dump(empty($str)); // boolean false //Recuerda siempre quitar los espacios con trim $str = ' '; $str = trim($str); var_dump(empty($str)); // boolean true
A veces es conveniente tener nombres de variables variables. Dicho de otro modo, son nombres de variables que se pueden definir y usar dinámicamente. Una variable normal se establece con una sentencia como:
$a = 'hola';
Una variable variable toma el valor de una variable y lo trata como el nombre de una variable. En el ejemplo anterior, hola, se puede usar como el nombre de una variable utilizando dos signos de dólar. Es decir:
$$a = 'mundo'; echo "$a $hola";
En PHP, los arrays pueden estar compuestos de elementos de diferente naturaleza y su primer índice o posición es la 0. Además, existen unos arrays especiales en PHP denominados asociativos en los que el índice es un valor de tipo string, de modo que cada posición está definida por el par (clave, valor), pudiendo acceder al contenido (valor) a través de la clave.
Ejemplo de array escalar:
$array[0] = "Mi Nombre"; $array[1] = "es Carlos y tengo"; $array[] = "25 años"; //Lo insertara en la posición 2. for ($i = 0; $i <= count($array) – 1; $i++) { echo $array[$i] ." "; }
Ejemplo de array asociativo:
$array["nombre"] = "Mi Nombre"; $array["es"] = "es Carlos y tengo"; $array["tengo"] = "25 años"; echo $array["nombre"] ." ". $array["es"] ." ". $array["tengo"];
Aunque echo y print no son funciones sino construcciones del lenguaje (tales como if, while o list()), la principal diferencia es que print puede comportarse como una función, puesto que devuelve el valor 1, por lo que es posible que una instrucción print se encuentre participando en expresiones complejas, donde echo generaría un error. Ello nos lleva a que print es algo más lento que echo, puesto que pierde un tiempo en ocuparse de devolver el valor.
Existen dos operadores para datos tipo string. El primero es el operador de concatenación ('.'), el cual retorna el resultado de concatenar sus argumentos derecho e izquierdo. El segundo es el operador de asignación sobre concatenación ('.='), el cual añade el argumento del lado derecho al argumento en el lado izquierdo.
$a = "Hello "; $b = $a . "World!"; // ahora $b contiene "Hello World!" $a = "Hello "; $a .= "World!"; // ahora $a contiene "Hello World!"
$a = 1; $b = 2; $c = 3; //if... else if ($a > $b) { echo "a es mayor que b"; } else { echo "b es mayor que a"; } //if... elseif if ($a > $b and $a > $c) { echo "a es mayor que b y c"; } elseif ($b > $a and $b > $c) { echo "b es mayor que a y c"; } else { echo "c es mayor que a y b"; }
$a = 5; $b = 2; $c = 3; $mayor = ($a > $b) ? $a : $b; echo "El número mayor es: ". ($mayor > $c) ? $mayor : $c;
echo "La suma de los 10 primeros números enteros es: "; $suma = 0; for ($i = 1; $i <= 10; $i++) { $suma += $i; echo $i . ($i == 10) ? "=" : "+"; } echo $suma;
$frutas = array("Manzana", "Pera", "Naranja"); foreach ($frutas as $fruta) { echo "Fruta: $fruta <br />\n"; }
//while $i = 1; while ($i <= 10) { echo $i++; //post-incremento, primero imprime el valor de $i, luego incrementa 1. } //do... while $i = 0; do { echo $i; } while ($i > 0); //Entra siempre la primera vez.
echo "Hoy es: "; $dia = date("D"); switch ($dia) { case "Mon": echo "Lunes"; break; case "Tue": echo "Martes"; break; case "Wed": echo "Miércoles"; break; case "Thu": echo "Jueves"; break; case "Fri": echo "Viernes"; break; case "Sat": echo "Sábado"; break; default: echo "Domingo"; }
+ $a + $b //Suma - $a - $b //Resta * $a * $b //Multiplicación / $a / $b //División % $a % $b //Resto de la división entera
&& $a && $b //$a y $b son ambos true and $a and $b //$a y $b son ambos true || $a || $b //$a o $b son true or $a or $b //$a o $b son true ! !$a //$a es false, niega el valor lógico de la variable xor $a xor $b //$a es true o $b es true, pero no lo son los dos a la vez.
= $a = $b //$a toma el valor de $b += $a += $b //Equivale a: $a = $a + $b -= $a -= $b //Equivale a: $a = $a - $b *= $a *= $b //Equivale a: $a = $a * $b /= $a /= $b //Equivale a: $a = $a / $b %= $a %= $b //Equivale a: $a = $a % $b .= $a .= $b //Equivale a: $a = $a . $b
= $a = $b //$a toma el valor de $b += $a += $b //Equivale a: $a = $a + $b -= $a -= $b //Equivale a: $a = $a - $b *= $a *= $b //Equivale a: $a = $a * $b /= $a /= $b //Equivale a: $a = $a / $b %= $a %= $b //Equivale a: $a = $a % $b .= $a .= $b //Equivale a: $a = $a . $b
++ ++$a //Preincremento: Incrementa $a en uno y después devuelve $a. $a++ //Postincremento: Devuelve $a y después incrementa en uno $a. -- --$a //Predecremento: Decrementa $a en uno y después devuelve $a. $a-- //Postdecremento: Devuelve $a y después decrementa en uno $a.
@mail($email, $subject, $message);
<form id="agenda" method="post"> <p> Nombre: <input name="nombre" type="text"> </p> <p> Email: <input name="email" type="text"> </p> <p> <input name="enviar" type="submit" value="Enviar datos"> </p> </form>
$nombre = $_GET["nombre"]; $email = $_GET["email"]; echo "Nombre: $nombre <br> Email: $email";
$nombre = $_POST["nombre"]; $email = $_POST["email"]; echo "Nombre: $nombre <br> Email: $email";
$nombre = $_REQUEST["nombre"]; $email = $_REQUEST["email"]; echo "Nombre: $nombre <br> Email: $email";
function sanatize($string) { return strip_tags(addslashes($string)); } $nombre = sanatize($_GET["nombre"]); $email = sanatize($_GET["email"]); $nombre = sanatize($_POST["nombre"]); $email = sanatize($_POST["email"]); $nombre = sanatize($_REQUEST["nombre"]); $email = sanatize($_REQUEST["email"]); echo "Nombre: $nombre <br> Email: $email";
//Parámetors obligatorios function imprimir($texto) { echo $texto; } imprimir("Hola mundo"); //Si no se pasa ningún valor marcará un warning. //Parámetros opcionales function imprimir($texto = "Adiós mundo cruel") { echo $texto; } imprimir(); //Imprimirá "Adiós mundo cruel", y no marcará error. imprimir("Ola ke ase, aprendiendo PHP o que ase."); //Imprimirá "Ola ke ase, aprendiendo PHP o que ase."
Una de las cualidades de una función es que puede regresar un valor.
function sumar($a, $b) { return $a + $b; } echo sumar(2, 2); //Imprimirá: 4.
$saludo = function($nombre) { echo "Hola $nombre <br>"; }; //OJO: Punto y coma al final de la llave, si no marca error. $saludo("Carlos"); $saludo('Mundo');
//Inicializando las sesiones session_start(); if (!isset($_SESSION["visitas"])) { $_SESSION["visitas"] = 1; } else { $_SESSION["visitas"]++; } echo "Esta página ha sido visitada ". $_SESSION["visitas"] ." veces"; //Eliminar sessiones, 2 formas: unset($_SESSION["visitas"]); session_destroy();
//Creando una cookie if (!isset($_COOKIE["visitas"])) { setcookie("visitas", 1, 3600); //Duración: 1 hora } else { setcookie("visitas", $_COOKIE["visitas"] + 1, 3600); //Alterando la cookie. } echo "Esta página ha sido visitada ". $_COOKIE["visitas"] ." veces"; //Eliminar cookie: setcookie("visitas"); //No se le específica valor ni tiempo de vida.
//archivo: variables.php $color = "verde"; $fruta = "manzana"; //archivo: prueba.php echo "Una $fruta $color"; //Imprime: Una include "variables.php"; //Si no existe muestra un Warning #require "variables.php"; //Si no existe manda un Fatal Error, detiene la ejecución del script #include_once "variables.php"; //Sólo incluye el archivo 1 vez, si no existe Warning. #require_once "variables.php"; //Sólo incluye el archivo 1 vez, si no existe Fatal error. echo "Una $fruta $color"; //Imprime: Una manzana verde
//Lectura de un archivo. $handle = fopen("files/archivo.txt", "r"); if ($handle) { while (($buffer = fgets($handle, 4096)) !== false) { echo $buffer; } if (!feof($handle)) { echo "Error: unexpected fgets() fail\n"; } fclose($handle); } //Si se escribe dos veces sobre el puntero al archivo la información //será añadida al final del contenido del archivo: $fp = fopen('data.txt', 'w'); fwrite($fp, '1'); fwrite($fp, '23'); fclose($fp); //¡El contenido de 'data.txt' ahora es 123 y no 23!
//file_get_contents - Obtiene un archivo o una página Web específicada $codejobs = file_get_contents("http://www.codejobs.biz"); echo $codejobs; $archivo = file_get_contents("miarchivo.txt"); echo $archivo; //file_put_contents - Escribe una cadena a un fichero // Abre el fichero para obtener el contenido existente $contenido = file_get_contents("emails.txt"); // Añade un nuevo email al fichero $contenido .= "carlos@milkzoft.com\n"; // Escribe el contenido al fichero file_put_contents("emails.txt", $contenido);
//formulario.php <form action="upload.php" method="post" enctype="multipart/form-data"> <input name="archivo" type="file"> <input name="subir" type="submit" value="Upload File"> </form> //upload.php, asegúrate de colocar permisos 777 a la carpeta "files". if (isset($_POST["subir"])) { // Obtenemos los datos del archivo $size = $_FILES["archivo"]["size"]; $type = $_FILES["archivo"]["type"]; $filename = $_FILES["archivo"]["name"]; if ($filename != "") { // Guardamos el archivo a la carpeta files $destino = "files/$filename"; if (move_uploaded_file($_FILES["archivo"]["tmp_name"], $destino)) { echo "Archivo subido: $filename"; } else { echo "Error al subir el archivo"; } } else { echo "Error al subir archivo"; } }