Realice la autenticación HTTP usando PHP Curl
-
Introducción a
php-curl
-
Instalación de la Librería
php-curl
en Ubuntu - Realice la autenticación HTTP básica desde un formulario HTML
-
Realice la autenticación HTTP básica utilizando
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
.
-
curl_init()
- Inicializa una sesióncURL
. -
curl_close()
- Cierra una sesión decURL
. -
curl_setopt(handle, option, value)
- Establece la opción para la sesióncURL
. Aquí,handle
es el valor devuelto porcurl_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. -
curl_exec()
- Ejecuta la sesión predefinidacURL
.
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:
Puede verificar la solicitud HTTP en la pestaña Red
de la opción Inspeccionar elemento
, como se muestra a continuación.
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.
http://localhost/curl/login.php
es la URL de destino donde enviamos la solicitud concURL
.- La opción
CURLOPT_FOLLOWLOCATION
establecida enTRUE
sigue a cualquier ubicación de encabezado que sea redirigida porLocation: header()
. - La opción
CURLOPT_POST
configurada enTRUE
informa a la sesión que se trata de una peticiónPOST
al servidor. - La opción
CURLOPT_POSTFIELDS
define el payload enviado en la solicitud. - La opción
CURLOPT_COOKIEJAR
guarda las cookies en el archivocookie.txt
después de cerrar la sesióncURL
. - La opción
CURLOPT_RETURNTRANSFER
establecida enTRUE
devuelve la respuesta decurl_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.
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 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