Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Alex

#1121
Back-end / Re:Curso de PHP by alexander1712 - PARTE 1
Octubre 25, 2012, 05:09:32 PM
Breve historia de PHP

PHP fue desarrollado en 1994 por Rasmun Lerdorf. La primera versión disponible para el públio, conocida como Personal Home Page Tools (PHP tools) data de 1995. Esta versión incluía herramientas básicas, como contadores, libro de visitas, entre otras. En 1995 el intérprete de PHP fue reescrito y se relanzó con una versión llamada PHP/FI versión 2. En 1997, nació PHP3 y pasó a ser un proyecto Open Source (Código abierto) a lo cual haremos una breve referencia más adelante. Actualmente se están desarrollando las nuevas versiónes de PHP 5.x
#1122
Back-end / Re:Curso de PHP by alexander1712 - PARTE 1
Octubre 25, 2012, 05:05:48 PM
¿Qué es php?

El objetivo del lenguaje PHP es brindarle a los creadores de sitios webs, la posibilidad de desarrollar sitios dinámicos, en forma sencilla y rápida, aunque en verdad, como iremos descubriendo a lo largo de este libro, veremos que las posibilidades y funcionalidades de php son muy superiores al simple hecho de solo hacer una página web dinámica.

Todos sabemos que en internet ya no basta con tener un sitio estático porque estamos limitados para introducir cambios en su contenido en tiempo real, es decir, que cada vez que queremos introducir una modificación, debemos crear la página web para hacerlo, y luego publicarla (Normalmente subirla por FTP) al servidor donde reside nuestro Sitio Web. En un sitio dinámico, esta operatoria cambia radicalmente, ya que la información del sitio, generalmente está contenida en una báse de datos. Cada vez que mostramos una página, como una página de noticias, buscamos en la base de datos las últimas noticias que tenemos ingresadas para mostrar en el navegador del visitantes. Ahora bien, si queremos que la página muestre nuevas noticias, simplemente cargamos las noticias en la base de datos, por ejemplo a traves de un formulario, siendo esto el único cambio que debemos hacer, ya que desde el momento en que esté la noticia cargada, automáticamente aparecerá en la página de noticias.
#1123
Back-end / Re:Curso de PHP by alexander1712 - PARTE 1
Octubre 25, 2012, 05:03:09 PM
¿Qué es HTML?, requisitos para aprender este curso

Hiper Text markup lenguage, es un lenguaje preparado para dibujar, en navegadores web, utilizando tags o etiquetas, para php es la parte visual del código, lo que genera lo que se ve, por decirlo de algún modo

los requisitos minimos para aprender con este curso es:

tener control y manejo de servidores web
tener idea de como hacer una web en html y publicarla
los conceptos minimos de páginas web

si no cumples con estos conocimientos puedes investigar en google o en underc0de jejejej.
#1124
Back-end / Re:Curso de PHP by alexander1712 - PARTE 1
Octubre 25, 2012, 04:56:57 PM
Introducción

PHP también denominado PHP Hipertext Processor, es un lenguaje de programación interpretado de alto nivel para internet, muy similar en su sintaxis al lenguaje C, Java o Perl, con algunas diferencias, no compila como el lenguaje C, es un intérprete, por lo tanto cada vez que debe ejecutar un programa, lo interpreta, verificando de paso, toda su sintaxis.
#1125
Back-end / Curso de PHP by alexander1712 - PARTE 1
Octubre 25, 2012, 04:54:16 PM
Buenos días, hoy traigo un curso de php que iré desarrollando de a poco, comentando con respuestas el tema.

Temario:

Introducción
- ¿Qué es HTML y requisitos minimos para este curso?
- ¿Qué es PHP?
- Breve historia de php
- ¿Qué es open source o código abierto?
- ¿Cuánto cuesta PHP?
- Lenguajes de cliente o Lenguajes de servidor
- ¿Cómo funcionan las páginas en HTML?
- ¿Cómo funcionan las páginas en PHP?
- ¿Qué necesito para poder programar en php?
- ¿Qué podemos hacer con php?
Conceptos Básicos
- Sintaxis
- ¿Para qué sirve una variable?
- PHP embebido (html)
- Variables de entornom superglobales
- Pasaje de variables a través de php
- Constantes
- Funciones relacionadas con las variables
- Operadores matemáticos
- expresiones
Sentencias
- estructura if
- estructura for
- estructura while
- estructura switch
- Operadores de asignación
- Operadores para concatenar
- Operadores de Comparación y comparación compleja
- Operadores de incremento/decremento
- Operadores lógicos
Separando el código
- Inclusión de archivos
- Funciones
- pasaje de parametros por valor y por referencia
- Arreglos
- Funciones anónimas
- Operador de supresión de error
Arrays
- vectores
- matrices
- tridimensionales
- asociativos
- funciones relacionadas con arrays
Procesando cadenas
- Funciones para manejo de cadenas
Manejo de archivos y directorios
- introducción
- abrir archivos
- cerrar archivos
- ver contenido de archivos
- otras funciones para archivos
- subiendo archivos al servidor
Bases de datos
- ¿qué es una base de datos?
- Tipos de base de datos
- Diseño de bases de datos
- SQL
- Querys
- creando una base de datos
- borrando base de datos
- crear tabla
- borrar tabla
- alta de registro
- consultas
- ordenando resultados
- filtrando resultados
- borrando registro
- edicion de registro
- mostrando errores
- consultas multiples
- Seguridad en consultas
Manejo de sesiones
- Cookies
- Crear una cookie
- Ver el contenido de una cookie
- Borrar cookie
- limitando el alcance de una cookie
- Enviando cabeceras http
- Sesiones
- Algunas aclaraciones
- Funciones para el manejo de sesiones
Enviando emails
- Correo con PHP
- función Mail
- Añadiendo cabeceras adicionales
Creación y tratamiento de imagenes
- Biblioteca GD
- Funciones para el tratamiento de imagenes




En la parte 2 nos introduciremos en PHP orientado a OBJETOS
En la parte 3 nos introduciremos en PHP CLI y otras cosas interesantes.

Iré completando el curso de a poco con respuestas, POR FAVOR NO RESPONDAN ESTE TEMA.

saludos!
#1126
Back-end / TIPS para programar mejor en php
Octubre 24, 2012, 09:55:52 PM

buenos días a todos los usuarios y visitantes de UnderC0de, estaba viendo un código de un usuario del foro cuando noté varios problemas referente al uso de comillas dobles, nulos y otras cosas que a continuación explicaré.

¿Cuándo usar apostrofes ('') y cuando usar comillas ("")?

Una de las primeras cosas que noté fue que la persona que desarrolló ese código, no tenía una clara idea de cuando usar comillas y cuando usar apostrofes, asi que pasaré a explicarlo:

Los apostrofes nos permiten expresar cadenas literales... ¿que quiere decir esto? que si nosotros ponemos por ejemplo

Código: text
echo '$hola';


se mostrará exactamente $hola, y no el contenido de la variable, por lo tanto, para poder poner una variable y juntarla con un texto literal sería así:

Código: text
echo 'hola'.$nombre;


ese es el uso correcto del concatenador, osea el punto, que nos permite juntar (concatenar)  el literal con una variable.




Por otra parte tenemos el uso de textos parseados, a que me refiero con esto? a las comillas. que lo que hacen es "parsear" o dicho de otra forma, reemplazar las variables por sus valores.

por ejemplo si ponemos

echo "$hola";

en vez de mostrar $hola, mostrará el valor de $hola.

en este caso para poner literales y variables sería así:

Código: text
echo "hola $nombre";


de esta forma no utilizamos el concatenador.

no es conveniente usar "hola ".$nombre porque estamos utilizando un concatenador además de decirle al interprete de php que parsee el hola, por ende se pierden recursos.

de paso, aclarar que yo uso la primera técnica (literal concatenado con punto) para así reducir el consumo mayor que tiene parsear textos.




Constantes de php

Otra cosa que noté es que la gente tiene la costumbre de utilizar '' para representar valores nulos, por ejemplo si quieren declarar una variable pero sin darle valor ponen así

Código: text
$alex = '';


lo que quiero comentarles es que en este caso pueden utilizar la constante NULL de modo que queda un poco más vistoso el código.

Código: text
$alex = NULL;


y también aclarar que es recomendable que todas las constantes esten en mayusculas, por ejemplo:

CitarTRUE
FALSE
NULL
etc.




Diferencia entre dos iguales y tripleigual

ya que estamos quiero especificar la diferencia entre poner

== y ===

si nosotros ponemos:

Código: text
if ( $roberto == 1 )


lo que verifica el if, es si es igual a uno en valor, a que me refiero? a que si la variable $roberto es igual a uno.

si nosotros ponemos:

Código: text
if ( $roberto === 1 )


no solo verificamos que sea igual a uno, sino que también sea del mismo tipo, por ejemplo:

si nosotros ponemos

Código: text
$roberto = 1;
if ($roberto == TRUE)


el if se cumple porque TRUE es lo mismo que 1, pero si nosotros ponemos

Código: text
$roberto = 1;
if ($roberto === TRUE)


la condición no se cumple, porque si bien TRUE es lo mismo que 1, el 1 que asignamos a roberto en la linea anterior al if, es de tipo INT y el TRUE es de tipo BOOLEAN.

tenga en cuenta que el distinto sería:

Código: text
!=
!==





Empty e Isset

para verificar si una variable no tiene valor normalmente ustedes ponen

Código: text
if ( $var == '' )


yo les aconcejé en esta guía de tips usar NULL por lo que pondrían:

Código: text
if ( $var == NULL )


en realidad hay una función que verifica si está vacío:

Código: text
if ( empty($var) )


como ven tiene una nomenclatura más vistosa.

No pueden aplicarle empty a una función que devuelva algún valor.
Ej:

Código: text

<?php

if(empty(ej())) {
        echo "Si\n";
}

function ej() {
        return TRUE;
}


?>


Salida:

Código: text
~/www/public$ php a.php
PHP Fatal error:  Can't use function return value in write context in /home/yoya/www/public/a.php on line 3


otro dato interesante es que si requieren verificar con if una variable que no existe o puede no existir todos sabemos que si displays errors está activado nos dará error "Warning undefined variable"

para evitar esto podemos poner

Código: text
if(isset($var) && $var==1)


esto hará que antes de verificar una variable inexistente cumple cierta condición, verificará que exista.
(tenga en cuenta que la función isset verifica la existencia de una variable)

También algo que se debe tener en cuenta, normalmente cuando trabajamos con datos que manda el usuario sea por GET o POST. Normalmente se comprueba si la cadena que llega esta vacía, tipicamente se utiliza isset o empty para hacer la comprobacion pero estos pueden dar falsos positivos.

isset, dara verdadero si la variable ha sido definida aunque no contenga ningún valor.

empty, dará verdadero si la variable ha sido definida y contiene algún valor distinto PERO si la variable contiene solo espacio en blanco la dará como valida. En este caso, hay que utilizar el consejo que nos da la misma documentacion.

Código: text
<?php

$ej = " ";

if (trim($ej) == FALSE) {

        echo 'La variable contiene algun valor';
}else {

        echo 'La variable esta vacia';
}

?>





forzar tipos

otra cosa interesante que me topé a lo largo de mi aprendizaje de php fue forzar un tipo de dato. (type casting)

por ejemplo:

Código: text
$alex = (int) 'Pedrito 1 clavo un clavito';


ese int entre parentesis obligará a guardar solo los numeros en la variable.

tambien podemos usar por ejemplo (float)

es útil si vamos a trabajar con comparación de tres iguales ( === )




Incremento y decremento

ésto es algo que a mi me ocurría cuando yo cambié de lenguaje a php, yo hacía así para sumar uno a un contador:

Código: text
$c = $c + 1;


en php eso fue cambiado por

Código: text
$c++;


y también está

Código: text
$c--;


y si quieren sumar algo a una variable (que no sea solo incrementar en uno)

Código: text
$var+=10;


eso sumará 10 al valor actual de $var

Sobre esto ++ y --. Dependiendo el lugar donde lo pongas, antes o después de la variable, tendrá un efecto diferente.

Ejemplo:
Código: text
<?php

$A = 10;
$B = 10;
echo $A++."\n";
echo ++$B."\n";
?>


Salida:

Código: text
$ php a.php
10
11


Si agregas el ++ antes de la variable, lo que quiere decir es que primero se incrementara la variable y luego se ejecuta la variable.
Si agregas el ++ después de la variable, lo que quiere decir es que primero se ejecuta la variable, luego se incrementa (conocido como preincremento y predecremento).

También otro pequeño tip, aparte de +=, puedes utilizar los demás operadores aritméticos. +=, -=, *=, /=, etc...




Operador Ternario

el Operador Ternario o if simplificado es muy útil cuando entiendes como funciona y te das cuenta en donde usarlo, la sintaxis es así:

condicion ? si se cumple : si no se cumple;

se evalúa la condición, y devuelve en caso de ser verdadera el valor a la izquierda de los dos puntos, y en caso de no cumplirse, devuelve el valor a la derecha.

ejemplo:

Código: text

echo $edad>17 ? 'usted es mayor de edad' : 'usted es menor de edad';





identación y comentarios

una cosa que siempre me parece horrorosa en los códigos es que esté mal identado.

la identación consiste en mantener un orden en el código, las tabulaciones entre la apertura de llaves de funciones, etc.

un ejemplo de mi identación:

Código: text


codigo
lalalal
mas codigo
function prueba()
  {
  código de la función
  while()
     {
       codigo de mi while
     }   
  fin del codigo de la funcion
  return 0;
  }
fin de mi código php


también es importante documentar el código con comentarios.

hay 3 tipos de comentarios

Código: text
// una linea

/*
mas de una linea
*/

# código que ya no uso


esa es mi forma de comentar, entonces arriba de cada linea del código pongo que hace con un comentario de una linea.

y al principio de mi código pongo de que trata y el autor de éste modo:

Código: text

/**
   * Nombre del proyecto: Ejemplo
   * Estado: Prototipo
   * Fecha de edición: 24/10/12
   * Autor: Alexander1712
   * Web: underc0de.org
   */


y cuando quito alguna linea de mi código, no la borro, sino que la comento con un numeral (#) delante.

Sobre los comentarios, hay otro tipos de comentarios que en realidad que se utilizan para generar documentacion automatica o para indicar como funciona el codigo, una funcion, que tipo de valor retorna, que tipo de valor recive, etc...

Que viene siendo lo mismo que lo que hace JavaDoc.

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

El que yo conozco es You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

esos son los tips que yo les dejo, espero que les sirvan, un saludo! Alexander171294

Agradezco a ~Yoya~ por su colaboración con el post, e invito a quien desee agregar algún comentario sobre lo que le falta y no se me ocurrió, o que quisieran agregar (téngase en cuenta que estaba en la escuela armando el post, y simplemente a memoria, sin basarme en la documentación oficial)
#1127
Back-end / Re:limpiar cadena de texto
Octubre 21, 2012, 05:12:21 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Está bueno el script, aunque con preg_match te ahorras todas esas líneas indicando [a-zA-Z_] etc, saludos.

Idem pero no lo haría con preg_match me parece más idóneo preg_replace.

yo usé preg_replace para hacer una función que genera una url seo por decirlo así, agarra el titulo original y lo tranforma para que quede como una url seo.

Código: text

Public Function set_seo($string)
   {
    return preg_replace('/[^\-a-zA-Z0-9]/', '', preg_replace('/\s+/', '-',strtolower($string)));
   }


(aclaro que el public es porque lo saqué de una clase)

es que tu función es un poco exagerada ante el consumo de recursos.

Código: text
$_POST['enviar']=="ok"


me refiero a que por ejemplo en esa linea no te pusiste a revisar el gasto innecesario de parsear el string ok cuando lo podrías haber puesto literal. ya con eso solo haces derroche de recursos, y sin hacer incapié en las estructuras que utilizaste, en realidad es una simple opinión no hace falta que me hagan mucho caso, es que soy bastante molesto en cuanto se refiere a consumo de recursos xD

esa y otras funciones están aplicadas en mi script

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#1128
bro, una cosa, toda la rama de funciones mysql_algo están desactualizadas y fueron cambiadas por mysqli_algo

por ejemplo mysql_connect es ahora mysqli_connect (la nuevas funciones mysqli son más rápida, o por lo menos eso dice la web oficial de PHP Network)

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

esa es la referencia en la que me baso para aconcejarles a todos que no utilicen más mysql_

saludos!
#1129
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Mostrar texto antes de una cabacera puede generar error, en tu caso te recomendaría javascript aunque algunos salten a decir que el usuario puede tenerlo desactivado:

Código: php

<?php
echo '<script>window.location="URL";</script>';
?>


Sino, usar los META como te indicó Okol.

Saludos.

al final utilize este metodo pero , habra alguna forma de pausar por unos 3 seg la pagina donde informa que si se envio el correo?

gracias a todos

las 3 técnicas son válidas, por javascript, por html o por una cabecera.

en html puedes poner así los 3 segundos:

Código: text
<META HTTP-EQUIV='Refresh' CONTENT='3; URL=index.php'>


si revisas cambié el 0 por el 3.

si lo quieres hacer solo con php puedes:

Código: text
ob_start(); //para que no tire los errores de cabecera

echo 'espere algunos segundos';

flush(); // enviamos al cliente el mensaje

sleep(3000); // si no me equivoco trabaja con milisegundos

header('Location: ubicacion');


este ultimo codigo, realmente no probé si funciona, pero tengo entendido que por ejemplo tiene problemas el flush con win32, o si trabajas php como cgi algunos modulos de apache pueden dar problemas.

pero es interesante como funciona el flush, ob_start, ob_clear, etc.

te recomiendo de todos modos o la de html o la de js.

saludos!
#1130
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Si, de hecho aun no terminamos de parchearlo, pero yo creo que de mañana no pasa
Muchas gracias por avisar Alexander!
Conociendote de hace tiempo, es un placer tenerte en underc0de!

el placer es mío de que me permitan el acceso a ésta linda comunidad que haz armado con el esfuerzo entre todos.

no sabía que estaban parcheandolo, pensé que ya no estaba o el link estaba mal, gracias por aclarar.

mis saludos a todos.

#1131
hay una noticia, esta:



que al hacer click va acá:

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

y tira 404

no habría que quitarla o arreglarla?

saludos!
#1132
Hacking ShowOff / Re:XSS Reflected Movistar
Agosto 26, 2012, 04:32:41 AM
interesante patrón descubrieron, para mi alguien hizo el código con el xss y todos se lo copiaron jajajajja

saludos!