Realice la autenticación HTTP usando PHP Curl

Subodh Poudel 20 junio 2023
  1. Introducción a php-curl
  2. Instalación de la Librería php-curl en Ubuntu
  3. Realice la autenticación HTTP básica desde un formulario HTML
  4. Realice la autenticación HTTP básica utilizando cURL
Realice la autenticación HTTP usando PHP Curl

Este tutorial demuestra cómo realizar la autenticación HTTP utilizando PHP cURL en Ubuntu.

Introducción a php-curl

cURL (URL de cliente) es una utilidad de línea de comandos que envía o recibe datos y archivos. Utiliza la sintaxis de URL y admite protocolos como FTP, FTPS, DICT, HTTP, HTTPS, etc.

La biblioteca cURL está disponible en PHP, llamada php-curl. Podemos usar esta biblioteca para comunicarnos con los servidores mediante el envío de solicitudes HTTP en PHP.

Podemos realizar varias tareas como configurar cookies, usar proxies, pasar datos a través de conexiones SSL e incluso autenticación usando php-curl.

Veamos las funciones básicas de php-curl.

  1. curl_init() - Inicializa una sesión cURL.

  2. curl_close() - Cierra una sesión de cURL.

  3. curl_setopt(handle, option, value) - Establece la opción para la sesión cURL. Aquí, handle es el valor devuelto por curl_init().

    El parámetro opción puede tener un amplio valor de opciones. Puede encontrar la lista de opciones aquí.

    Se utiliza de acuerdo a la necesidad. El parámetro valor tiene el valor de la opción.

  4. curl_exec() - Ejecuta la sesión predefinida cURL.

Instalación de la Librería php-curl en Ubuntu

Antes de realizar la autenticación, debemos verificar si php-curl está instalado en nuestro sistema. Podemos hacerlo con el siguiente comando.

php -m

El comando enumera los módulos PHP compilados. Si puede ubicar curl en la lista, significa que php-curl está instalado.

También puede verificar su instalación comprobando la salida de la función phpinfo(). Si está instalado, aparecerá una tabla para curl en la salida.

Si php-curl no está instalado, puede instalarlo mediante el siguiente comando.

sudo apt-get install php-curl

Después de la instalación, abra el archivo php.ini y busque la línea a continuación.

;extension=curl

Descomente la línea anterior como se muestra a continuación.

extension=curl

El paso final es reiniciar el servidor con cualquiera de estos comandos.

sudo systemctl start apache2
sudo /etc/init.d/apache2 start

Realice la autenticación HTTP básica desde un formulario HTML

En primer lugar, realizaremos una autenticación básica utilizando únicamente el método HTTP POST. Crearemos un formulario de inicio de sesión HTML que acepte nombre de usuario y contraseña.

Verificaremos la entrada del usuario con un conjunto de credenciales de inicio de sesión predefinidas. A continuación, realizaremos la autenticación HTTP con métodos cURL.

Por ejemplo, cree un directorio curl en /var/www/html y luego cree un archivo login.php. En el archivo PHP, cree un formulario de inicio de sesión usando HTML.

Escriba los atributos nombre como uname y contraseña para nombre de usuario y contraseña, como se muestra en el ejemplo a continuación.

Ejemplo de código:

<form action="login.php" method="post">
  <input type="text" placeholder="Enter Username" name="uname" required><br>
  <input type="password" placeholder="Enter Password" name="pass" required><br>
  <button type="submit" >Login</button>
</form>

A continuación, abra la etiqueta PHP y utilice la función isset() para comprobar si el nombre de usuario y la contraseña son iguales a usuario123 y contraseña123. Utilice la condición if para mostrar el mensaje en consecuencia, como se muestra en el siguiente ejemplo.

if(isset($_POST['uname'])&& isset($_POST['pass']))
   if($_POST['uname']=='user123' && $_POST['pass']=='password123'){
       echo "login successful";
   }
   else{
       echo "login failed";
   }

Ahora, abra el archivo desde el servidor y complete las credenciales de inicio de sesión de la siguiente manera.

username=user123
password=password123

Producción:

Formulario de inicio de sesión - html

Puede verificar la solicitud HTTP en la pestaña Red de la opción Inspeccionar elemento, como se muestra a continuación.

Inspeccionar elemento

Puede probar la autenticación enviando las credenciales incorrectas al formulario, mostrando el mensaje “error de inicio de sesión”. Las credenciales incorrectas también se pueden ver desde la pestaña Solicitar, como en la imagen de arriba.

Realice la autenticación HTTP básica utilizando cURL

Podemos realizar la autenticación HTTP utilizando los métodos cURL mencionados anteriormente. Primero, debemos crear una carga útil para enviar la solicitud HTTP al servidor.

Por ejemplo, cree un archivo post.php dentro del directorio curl. En el archivo PHP, cree una matriz $data y almacene las credenciales de inicio de sesión correctas, como se muestra a continuación.

$data = array(
    "uname" => "user123",
    "pass" => "password123",
    "form" => "submit"
);

A continuación, cree una variable ch para almacenar la sesión cURL. Asigne la función curl_init() con la URL http://localhost/curl/login.php a ch.

Después de eso, use la función curl_setopt() para configurar las diversas opciones para la sesión cURL. Establezca CURLOPT_FOLLOWLOCATION, CURLOPT_POST y CURLOPT_RETURNTRANSFER en TRUE.

Proporcione la carga útil $data para la opción CURLOPT_POSTFIELDS. Para la opción CURLOPT_COOKIEJAR, escriba el nombre del archivo de la cookie cookie.txt.

Debe crear un archivo cookie.txt vacío para almacenar la cookie en el directorio del proyecto.

  1. http://localhost/curl/login.php es la URL de destino donde enviamos la solicitud con cURL.
  2. La opción CURLOPT_FOLLOWLOCATION establecida en TRUE sigue a cualquier ubicación de encabezado que sea redirigida por Location: header().
  3. La opción CURLOPT_POST configurada en TRUE informa a la sesión que se trata de una petición POST al servidor.
  4. La opción CURLOPT_POSTFIELDS define el payload enviado en la solicitud.
  5. La opción CURLOPT_COOKIEJAR guarda las cookies en el archivo cookie.txt después de cerrar la sesión cURL.
  6. La opción CURLOPT_RETURNTRANSFER establecida en TRUE devuelve la respuesta de curl_exec() en lugar de la entrada directa.

Finalmente, escribe la función curl_exec() con ch como parámetro para ejecutar la sesión cURL y cierra la sesión con curl_close(). Por último, muestra la función de salida curl_exec().

Ejemplo de código:

$ch = curl_init('http://localhost/curl/login.php');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$result = curl_exec($ch);
curl_close($ch);
echo $result;

Luego, ejecuta el script post.php. Se recibe el siguiente resultado ya que las credenciales son correctas en la carga útil.

Formulario de inicio de sesión - curl

La salida dirá inicio de sesión fallido si usamos las credenciales incorrectas.

Por lo tanto, este tutorial demostró cómo realizar una autenticación básica de cURL en PHP.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Artículo relacionado - PHP Curl