jueves, 8 de septiembre de 2016

Unidad 9 Curso PHP, Gracias por Asistir :)

Envió de Correo Electrónico:

$nombre_origen    = "Venezuela Comercial";
$email_origen     = "admin@venezuelacomercial.com.ve";
$email_copia      = "microsoft@curso.copia.com";
$email_ocultos    = "venehosting@hotmail.com";
$email_destino    = "destino@gmail.com";
$asunto           = "Emails desde Pagina Web";
$mensaje          = '<center><b>ESTE ES UN MENSAJE EN HTML</b><center><br>probando el envio de email';
$formato          = "html";
//*****************************************************************//
$headers  = "From: $nombre_origen <$email_origen> \r\n";
$headers .= "Return-Path: <$email_origen> \r\n";
$headers .= "Reply-To: $email_origen \r\n";
$headers .= "Cc: $email_copia \r\n";
$headers .= "Bcc: $email_ocultos \r\n";
$headers .= "X-Sender: $email_origen \r\n";
$headers .= "X-Mailer: Enviado con Script de: CURSOS SAIT \r\n";
$headers .= "X-Priority: 3 \r\n";
$headers .= "MIME-Version: 1.0 \r\n";
$headers .= "Content-Transfer-Encoding: 7bit \r\n";
$headers .= "Disposition-Notification-To: \"$nombre_origen\" <$email_origen> \r\n";
//*****************************************************************//
if($formato == "html")
 { $headers .= "Content-Type: text/html; charset=iso-8859-1 \r\n";  }
   else
    { $headers .= "Content-Type: text/plain; charset=iso-8859-1 \r\n";  }


if (mail($email_destino, $asunto, $mensaje, $headers))
    { echo "Mensaje Enviado";  }
                 else
                {  echo "Mensaje NO enviado"; }

Clases y Objetos

class


La definición básica de clases comienza con la palabra clave class, seguido por un nombre de clase, continuado por un par de llaves que encierran las definiciones de las propiedades y métodos pertenecientes a la clase.



<?php
class SimpleClass
{
    // Declaración de la propiedad
    public $var 'a default value';

    // Declaración del método
    public function displayVar() {
        echo $this->var;
    }
}
?>

Creación de una instancia

new

Para crear una instancia de una clase, la palabra clave new debe ser usada. Un objeto siempre se creará a menos que el objeto tenga un constructor que arroje una excepción en caso de error. Las clases deberían ser definidas antes de la instanciación (y en algunos casos esto es un requerimiento).
Si una string que contiene el nombre de una clase se usa con new, una nueva instancia de esa clase será creada. Si la clase está en un espacio de nombres, su nombre completamente cualificado se debe usar cuando se hace esto.
<?php
$instance 
= new SimpleClass();

// Esto también se puede hacer con variables:
$className 'Foo';
$instance = new $className(); // Foo()
?>

Herencia simple de clases

extends

Una clase puede heredar los métodos y propiedades de otra clase al utilizar la palabra clave extends en la declaración de la clase. No es posible extender múltiples clases; una clase sólo puede heredar de una clase base.
Los métodos y propiedades heredados pueden ser sobrescritos con la redeclaración de éstos utilizando el mismo nombre que en la clase parent. Sin embargo, si la clase parent definió un método como final, éste no podrá ser sobrescrito. Es posible acceder a los métodos sobrescritos o propiedades estáticas referenciándolos con parent::.
Cuando se sobrescriben métodos, la cantidad y disposición de los parámetros debería ser la misma o PHP generará un error a nivel de E_STRICT. Esto no se aplica a los constructores, que permiten la sobrescritura con diferentes parámetros.


<?php
class ExtendClass extends SimpleClass
{
    
// Redefinición del método parent
    
function displayVar()
    {
        echo 
"Clase extendida\n";
        
parent::displayVar();
    }
}

$extended = new ExtendClass();
$extended->displayVar();
?>

Auto-carga de Clases

Muchos desarrolladores que escriben aplicaciones orientadas a objetos crean un archivo fuente PHP para cada definición de clase. Una de las mayores molestias es tener que hacer una larga lista de includes al comienzo de cada script (uno por cada clase).
En PHP 5, esto ya no es más necesario. Se puede definir una función __autoload la cual es automáticamente invocada en caso de que esté intentando utilizar una clase/interfaz que todavía no haya sido definida. Al invocar a esta función el motor de scripting está dando una última oportunidad de cargar la clase antes que PHP falle con un error.
<?php
function __autoload($class_name) {
    include 
$class_name '.php';
}

$obj  = new MyClass1();
$obj2 = new MyClass2();
?>

Constructores y Destructores


Constructores

void __construct ([ mixed $args [, $... ]] )

PHP 5 permite a los desarrolladores declarar métodos constructores para las clases. Aquellas que tengan un método constructor lo invocarán en cada nuevo objeto creado, lo que lo hace idóneo para cualquier inicialización que el objeto pueda necesitar antes de ser usado.

Destructor

void __destruct ( void )

PHP 5 introduce un concepto de destructor similar al de otros lenguajes orientados a objetos, tal como C++. El método destructor será llamado tan pronto como todas las referencias a un objeto en particular sean removidas, cuando es explícitamente destruido o en cualquier otra circunstancia de finalización. 


Fin del Curso de PHP Espero les allá servido

Unidad 8 Curso de PHP

Permisos de acceso

rwx rwx rwx -> usuario grupo otros -> 000 000 000
- - - = 0 no se tiene ningún permiso
- - x = 1 solo permiso de ejecución
- w - = 2 solo permiso de escritura
- w x = 3 permisos de escritura y ejecución
r - - = 4 solo permiso de lectura
r - x = 5 permisos de lectura y ejecución
r w - = 6 permisos de lectura y escritura
r w x = 7 todos los permisos establecidos, lectura, escritura y ejecución

Tipos de Usuarios

1. Owner (propietario): La persona que el sistema reconoce como dueño de la carpeta o archivo.
2. Group (grupo): Conjunto de usuarios con permisos similares.
3. Other (otros): Cualquier otra persona.
Funciones sobre directorios

string getcwd ( void )

Obtiene el directorio actual.

bool chdir ( string $directory )

Cambia el directorio actual de PHP a directorio.

resource opendir ( string $path [, resource $context ] )

Abre un gestor de directorio para ser usado con llamadas posteriores como closedir(), readdir(), y rewinddir().

string readdir ([ resource $dir_handle ] )

Devuelve el nombre del siguiente archivo leído desde el directorio. Los nombres de archivo son devueltos en el orden en que son almacenados por el sistema de archivos.

void rewinddir ([ resource $dir_handle ] )

Restablece la secuencia de directorio indicada por gestor_dir al comienzo del directorio.



void closedir ([ resource $dir_handle ] )

Cierra la secuencia de directorio indicada por gestor_dir. La secuencia debe haber sido abierta previamente por opendir().

array scandir ( string $directory [, int $sorting_order = 0 [, resource $context ]] )

Devuelve un array de archivos y directorios que se encuentran bajo directorio.

bool rmdir ( string $dirname [, resource $context ] )

Intenta eliminar el directorio nombrado por dirname. El directorio debe estar vacío, y los permisos relevantes deben permitirlo. Un error de nivel E_WARNING será generado si se produce un error.

La Clase DIR

Directory {
string $path ;
resource $handle ;
string read ( void )
void rewind ( void )
void close ( void )
}
Un mecanismo pseudo-orientado a objetos para la lectura de un directorio. El directory dado es abierto. Se encuentran disponibles dos propiedades una vez el directorio ha sido abierto. La propiedad handle puede ser usada con otras funciones de directorio como readdir(), rewinddir() y closedir(). La propiedad path se define con la ruta del directorio que fue abierto. Hay tres métodos disponibles: read, rewind y close.
Ejemplo:

$d = dir("/");
echo "Handle: " . $d->handle . "\n";
echo "Path: " . $d->path . "\n";
while (false !== ($entry = $d->read())) {
   echo $entry."\n";
}
$d->close();

Funciones sobre ficheros

bool copy ( string $source , string $dest [, resource $context ] )

Realiza un copia del archivo source a dest.



bool unlink ( string $filename [, resource $context ] )

Elimina filename. Similar a la función unlink() de C en Unix. Un error de nivel E_WARNING será generado si se produce un error.

bool rename ( string $oldname , string $newname [, resource $context ] )

Intenta renombrar oldname a newname.

bool file_exists ( string $filename )

Comprueba si existe un archivo o directorio.

bool chmod ( string $filename , int $mode )

Intenta cambiar el modo de un archivo especificado por el dado en mode.

int fileperms ( string $filename )

Obtiene los permisos de un archivo dado, en un número entero en base decimal que contiene los permisos de dicho elemento. Si se desea mostrar los permisos en base octal de una forma más comprensible debido a la metodología de asignación de premisos se puede utilizar la siguiente sintaxis:

printf(“%o”,(fileperms(string $filename) & 0777))




Unidad 7 Curso PHP

Cookies

PHP soporta cookies HTTP de forma transparente. Las Cookies son un mecanismo por el cuál se almacenan datos en el browser remoto y así rastrear o identificar a usuarios que vuelven. Se pueden configurar Cookies usando la función setcookie() o setrawcookie(). Las Cookies son parte del header HTTP, así es que setcookie() será llamada antes que cualquier otra salida sea enviada al browser. Esta es la misma limitación que tiene la función header().

Algunos envíos de cookies desde el cliente serán incluidos automáticamente en el Array auto-global $_COOKIE si variables_order contiene "C". Si se desea asignar múltiples valores a una cookie, solo se deben agregar [] al nombre de la cookie.
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

Ejemplo:

$fecha_exp=time()+10;
$path=dirname($_SERVER['REQUEST_URI']).'/';
setcookie($nombre,$valor,$fecha_exp,$path,'',0);

Verificar en el navegador si la cookie fue creada satisfactoriamente.

Ejercicio 2:

Crear un contador de accesos utilizando cookies. De forma que cada vez que el usuario visite la pagina muestre el número de veces que ha entrado.


Sessiones
El soporte para sesiones en PHP consiste en una forma de preservar cierta información a través de accesos subsiguientes. Esto habilita la construcción de aplicaciones más personalizadas e incrementar el atractivo de su sitio web.
Un visitante que accede a su sitio web se el asigna un id único, también llamado id de sesión. Éste es almacenado en una cookie en el lado del cliente o se propaga en la URL.
El soporte para sesiones le permite registrar un número arbitrario de variables para preservarlas a través de las peticiones. Cuando un visitante accede a su sitio, PHP comprobará automáticamente (si session.auto_start está establecido a 1) o sobre su petición (explícitamete a través de session_start() o implícitamente a través de session_register()) si un id de sesión específico ha sido enviado con la petición. Si éste es el caso, se recrea el entorno anteriormente guardado.
Directivas a configurar para el manejo de sesiones:

session.save_path string: Este es la ruta donde los archivos son creados

session.name string : especifica el nombre de la sesión que se usa como nombre de cookie. Sólo debería contener caracteres alfanuméricos. Por defecto es PHPSESSID.

session.gc_probability integer: se usa junto con session.gc_divisor para manejar la probabilidad de que la rutina de gc (garbage collection, recolección de basura) está iniciada. Por defecto es 1.

session.gc_divisor integer: session.gc_divisor junto con session.gc_probability define la probabilidad de que el proceso de gc (garbage collection, recolección de basura) esté iniciado en cada inicialización de sesión. La probabilidad se calcula usando gc_probability/gc_divisor, p.ej. 1/100 significa que hay un 1% de probabilidad de que el proceso de GC se inicie en cada petición. session.gc_divisor por defecto es 100.
session.gc_maxlifetime integer: session.gc_maxlifetime especifica el número de segudos transcurridos después de que la información sea vista como 'basura' y potencialmente limpiada. La recolección de basura puede suceder durante el inicio de sesiones (dependiendo de session.gc_probability y session.gc_divisor).

session.use_cookies boolean: especifica si el módulo usará cookies para almacenar el id de sesión en la parte del cliente. Por defecto es 1 (habilitado).

session.use_only_cookies boolean: especifica si el módulo sólo usará cookies para almacenar el id de sesión en la parte del cliente. Habilitar este ajuste previene ataques que impican pasar el id de sesión en la URL. Este ajuste fue añadido en PHP 4.3.0. Por defecto es 1 (habilitado) desde PHP 5.3.0.

Pasos para crear una session simple utilizando cookies y archivos para almacenar e identificar una session:

1. Inicializar directivas en tiempo de ejecución si es necesario:

ini_set("session.use_cookies","1");
ini_set("session.gc_probability","100");
ini_set("session.gc_divisor","100");
ini_set("session.gc_maxlifetime","10");

2. Definir la estructura que tendrá nuestra session (nombre, tiempo de vida de la cookie, id):

//Parametros de la cookie de session o se setean asi: ini_set("session.cookie_lifetime","60");
$tiempo_vida=600;
session_set_cookie_params($tiempo_vida);
           
//Nombre de la session
$session_nombre='daniel';
           
//Asignacion del nombre de session
session_name($session_nombre);

//Asigna un ID definido por el usuario o por el paso de una variable por URL. Si esto no se utiliza PHP generara un ID automáticamente.
session_id($_GET[$id]);

3. Iniciar la session.:

//Inicio de session
session_start();

4. Almacenar variables en la session:

$_SESSION['login']='darm';
$_SESSION['pass']='123456';

Unidad 6 Curso PHP

Ejercicio con Base de Datos

1. Listar el contenido de la tabla persona en una tabla creada con HTML.

Resultado:
Cedula
Nombre
Apellido
Sexo
Fecha de Nacimiento
Dirección
Datos
Datos
Datos
Datos
Datos
Datos
Datos
Datos
Datos
Datos
Datos
Datos

Ejemplo:

Con el siguiente ejemplo es posible realizar una consulta SQL a la base de datos y listar el resultado obtenido.

<?php
            $sql=”SELECT * FROM persona WHERE 1;”;
            $result=mysql_query($sql,$link);
            unset($sql);
            if($result)
{
            $num=mysql_num_rows($result);
            if(!empty($num))
            {
                        for($i=0;$i<$num;$i++)
                        {
                                   echo mysql_result($result,$i,”nombre”).” “.mysql_result($result,$i,”nombre”).”<br>“;
}
}         
unset($num);
            mysql_free_result($result);
}
?>

Ejemplo para subir un archivo al servidor


<?php
                //Ejemplo para subir archivos al servidor
               
                function validar_archivo()
                {
                               $error=false;
                               ini_set("file_uploads","on");
                               $size_permitido=ini_get("upload_max_filesize");
                               $size_permitido[strlen($size_permitido)-1]=" ";
                               $size_permitido=trim($size_permitido);
                               $size_permitido*=1048576;
                               if($_FILES["archivo"]["size"]>$size_permitido)
                               {
                                               $error=true;
                                               echo"ARCHIVO ".$_FILES['archivo']['name']." SUPERA LIMITE DE TAMA&Ntilde;O PERMITIDO<br>";
                               }
                               if($_FILES["archivo"]["size"]>=diskfreespace("/"))
                               {
                                               $error=true;
                                               echo"ARCHIVO ".$_FILES['archivo']['name']." SUPERA LIMITE DE ALMACENAMIENTO DEL SERVIDOR<br>";
                               }
                               if($_FILES["archivo"]["type"]!="image/jpeg")
                               {
                                               $error=true;
                                               echo"ARCHIVO ".$_FILES['archivo']['name']." TIENE UN FORMATO NO VALIDO<br>";
                               }
                               return !$error;
                }

                function subir_archivo($directorio)
                {
                               echo $directorio.$_FILES['archivo']['name']."<br>";
                               if(validar_archivo())
                               {
                                               if(move_uploaded_file($_FILES['archivo']['tmp_name'],$directorio.$_FILES['archivo']['name']))
                                                               return true;
                                               else
                                                               return false;
                               }
                }             
               
                function formulario()
                {
                               echo"<form id='form1' name='form1' method='post' enctype='multipart/form-data'>";
                                               echo"Archivo:";
                                               echo"<input type='file' id='archivo' name='archivo'>";
                                               echo"<br><input type='submit' id='enviar' name='enviar' value='Subir'>";
                               echo"</form>";
                }
               
                print_r($_FILES);
                $directorio="archivos/";
                formulario();
                if(isset($_POST["enviar"]) and $_POST["enviar"]=="Subir")
                {
                               if(subir_archivo($directorio))
                                               echo"ARCHIVO SUBIDO SATISFACTORIAMENTE";
                               else
                                               echo"ERROR AL INTENTAR SUBIR ARCHIVO";
                }
?>