Archivo de la categoría: PHP

Todo lo relacionado con la programación en PHP

PHP CURL POST & GET Examples – Submit Form using PHP CURL

Sourabh Jain

In PHP CURL POST tutorial, I have explained how to send HTTP GET / POST requests with PHP CURL library.

Below are the examples covered in this article.
1) Send HTTP GET Request with CURL
2) Send HTTP POST Requests with CURL
3) Send Random User-Agent in the Requests
4) Handle redirects (HTTP 301,302)
5) Handle Errors.

Why we need PHP CURL ?
To send HTTP GET requests, simply we can use file_get_contents() method.

1
file_get_contens('http://hayageek.com')

But sending POST request and handling errors are not easy with file_get_contents().

Sending HTTP requests is very simple with PHP CURL.You need to follow the four steps to send request.

step 1). Initialize CURL session

1
$ch= curl_init();

step 2). Provide options for the CURL session

1
2
3
curl_setopt($ch,CURLOPT_URL,"http://hayageek.com");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
//curl_setopt($ch,CURLOPT_HEADER, true); //if you want headers

CURLOPT_URL ->…

Ver la entrada original 619 palabras más

Anuncios

Configurar visualización resultados Xdebug

A la hora de depurar en PHP una de las opciones que mas uso es el var_dump, el cual me da un volcado en pantalla de la variable que le pasamos. Esta función, usada sin Xdebug nos devuelve un volcado en texto plano el cual es un poco dificil de interpretar, aunque siempre podemos usarla en combinación con las etiquetas pre. Si tenemos activado el Xdebug, no hace falta ponerlo entre las etiquetas pre ya que la salida viene formateada.

Tomemos el siguiente ejemplo:


$variables = array(
 'uno' => array(
 'blanco' => array(
   'arriba' => array(
     'hola'
    ),
   'abajo' => array(
     'adios'
    )
   )
 )
);

var_dump($variables);

Si ejecutamos el var_dump sin tener Xdebug habilitado nos mostrara lo siguiente:

Captura de pantalla 2014-03-23 a la(s) 20.47.08Si lo ejecutamos con Xdebug habilitado

Captura de pantalla 2014-03-23 a la(s) 20.48.25Si veis, los valores de la tercera array anidada no se muestran, esto es debido a que los niveles de profundidad del Xdebug están establecidos como máximo a 3. Esto podemos modificarlo para que muestre los niveles de profundidad que nos interesen con estableciendo la variable xdebug.var_display_max_depth. En este ejemplo voy a establecer el nivel de profundidad a 4. El máximo valor que podemos establecer es 1023, y si no queremos poner limite la establecemos a -1. Para que esto funcione lo mas rápido es establecer su valor por medio del ini_set al principio del script.


ini_set('xdebug.var_display_max_depth', 4);

Ahora la visualización sera así

Captura de pantalla 2014-03-23 a la(s) 20.53.39

http://www.xdebug.com/docs/display

Uso de DateTime:sub – PHP Tips

DateTime::sub  — date_sub – Sustrae una cantidad de días, meses, años, horas, minutos y segundos de un objeto DateTime.

Esta función nos sirve para sustraer un intervalo de tiempo de un objeto DateTime, es decir, imaginemos que necesitamos quitarle a 10 días para hacer esto usaríamos el DateTime::sub()


$fecha = new DateTime('2014-03-21');

$fecha->sub(new DateInterval('P10D'));

echo $fecha->format('d-m-Y') . "\n"; // devolvera 11-03-2014

http://es1.php.net/manual/es/datetime.sub.php

Uso de DateInterval – PHP Tips

La clase DateInterval se introdujo en PHP 5.3 y representa un intervalo de fechas.  y como dice la definición de la clase:

Un intervalo de fechas almacena o bien una cantidad fija de momentos (en años, meses, días, horas, etc.) o bien un string de un momento relativo en el formato que admite el constructor DateTime.

El parametro que le pasamos al constructor es el interval_spec el cual es la especificación del intervalo. El formato de este intervalo empieza con la letra P, de “periodo”. Cada periodo de duración esta representado por un valor entero seguido de un indicador de periodo. Si la duración contiene elementos de tiempo esta parte esta precedida por la letra T. Por ejemplo si queremos especificar un intervalo de 1 día escribiremos P1D, si el intervalo es de 1 hora escribiremos PT1H.


// Intervalo de 1 dia

$intervalo = new DateInterval("P1D");

// Intervalo de 1 hora

$intervalo = new DateInterval("PT1H");

http://es1.php.net/manual/es/class.dateinterval.php

http://es1.php.net/manual/es/dateinterval.construct.php

Mejor IDE de PHP de 2014

Sitepoint ha creado una encuesta para conocer cual es el mejor entorno para la programación de PHP de 2014. Respondiendo a esta encuesta puedes conseguir uno de los siguientes regalos:

Aqui os dejo el enlace a la encuesta http://www.sitepoint.com/best-php-ide-2014-survey/

Tutoriales de PHP

He encontrado esta pagina en internet en la cual hay una gran cantidad de tutoriales para PHP, tanto para los que se quieran iniciar  como para casos particulares. Muy buen recopilatorio, lo único que están en inglés.

http://speckyboy.com/2013/05/14/php-tutorials-for-beginners/

Configurar Apache para que funcione con nuestro Dropbox

Dropbox se ha convertido en la solución principal que usamos la mayoría de nosotros para almacenamiento en la nube, no voy a entrar si es mejor o peor que otros (Box, Wuala, Ubuntu One, Google Drive), sino que es el que mejor compatibilidad tiene entre múltiples sistemas y es el que muchas aplicaciones implementan como servicio.

Tengo una cuenta de Dropbox desde hace tiempo, y la verdad no la usaba mucho, últimamente me decantaba mas por usar Box, pero en las ultimas semanas, he ido de un lado a otro y he tenido que buscarme una solución para poder trabajar en múltiples ordenadores, continuando mi trabajo donde lo había dejado y sincronizado. Aunque generalmente uso para sincronizar el trabajo Git, me he visto en la situación que no he podido realizar unos commits operativos, por lo tanto he tenido que recurrir a esta opción para tenerlo todo sincronizado.

El escenario

Las maquinas que he usado son o bien Linux, o Mac, en el caso de los Windows… lo siento no suelo usarlo para desarrollar.

Vamos a suponer que todos tenemos Dropbox, si no os podéis hacer una cuenta de las gratuitas, en la cuenta de Dropbox, he creado una cuenta llamada Devel.

Instalamos Dropbox, si no lo tenemos instalado en nuestro ordenador, y en mi caso como no me interesa sincronizar nada mas que la carpeta Devel, suelo hacer una sincronización selectiva y decir que solo me sincronice esta carpeta.

Una vez instalado, tanto en Linux la carpeta de Dropbox se nos instala en “/home/nuestroUsuario/Dropbox”, en Mac se instala en “/Users/nuestroUsuario/Dropbox”.

Ahora, si estamos en nuestro equipo principal de desarrollo copiamos y pegamos las carpetas principales de nuestros proyectos dentro de la carpeta “Devel”, así se nos subirá todo a nuestra carpeta de Dropbox.

Configurando Apache

En linux

Los proyectos que hemos subido, por lo menos en mi caso, son proyectos PHP, alguno de los cuales necesito probarlos en Apache,  para hacer que nuestros proyectos en Dropbox funcionen en Apache los mas recomendable es instalar el modulo Userdir. Para hacerlo abrimos una consola y ejecutamos el siguiente comando para activar el modulo

sudo a2enmod userdir

Una vez habilitado el modulo este nos dira que reiniciemos apache, no lo hacemos aun, ya que tenemos que configurar este modulo, ya que por defecto este nos habilita probar los proyectos o web que estén situados en la carpeta public_html ubicada en nuestro home.

En la terminal editamos el fichero de configuración userdir.conf

vim /etc/apache2/mods-available/userdir.conf

El archivo original es asi

<IfModule mod_userdir.c>
    UserDir public_html
    UserDir disabled root
    <Directory /home/*/public_html>
        AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch
        IncludesNoExec
        <Limit GET POST OPTIONS>
            Require all granted
        </Limit>
        <LimitExcept GET POST OPTIONS>
            Require all denied
        </LimitExcept>
    </Directory>
</IfModule>

Lo modificamos y lo dejamos así

<IfModule mod_userdir.c>
    UserDir Dropbox/devel
    UserDir disabled root
    <Directory /home/*/Dropbox/devel>
        AllowOverride All
        Options MultiViews Indexes SymLinksIfOwnerMatch
        IncludesNoExec
        <Limit GET POST OPTIONS>
            Require all granted
        </Limit>
        <LimitExcept GET POST OPTIONS>
            Require all denied
        </LimitExcept>
    </Directory>
</IfModule>

Con esto habilitamos el directorio de Dropbox/devel como directorio personal de desarrollo.

Antes de reiniciar el servidor es necesario cambiar los premisos de la carpeta Dropbox. Os recomiendo agregar vuestro usuario al grupo www-data y a continuación cambiar los permisos de esta manera, y una vez cambiados ya podemos reiniciar el servidor Apache.

sudo chmod -R g+rx Dropbox