Problema PHP

rgcrally

Hola chicos, tengo un problemilla mirar:

Estoy haciendo esta web para mi cuñado http://s437941385.mialojamiento.es/pablom_web/ y en la sección "Privado" es para la gente que tenga galerías privadas.

AL entrar en "Privado" te pide un user y un password.

user: boda01

pw: 1234

user: boda02
pw: 1234

Hay dos usuarios creados con sus respectivas contraseñas, cuando valida sale un enlace "Entrar" y se redirige a su respectivo sitio.

El problema radica en que pongas el user que pongas al validar siempre sale el mismo enlace "Entrar" y se dirige al mismo sitio.

Me gustaría meter otra regla en php, lo que pasa que no sé, para validar su usario con su enlace correspondiente.

Código Php -> http://pastebin.com/UvegR4TE#

pekpon

Esto está mal:

$uid = "boda01";
$pid = "1234";
$uid = "boda02";
$pid = "1234";

Ya que repites nombres de variables. $uid siempre valdrá "boda02" y lo mismo con la "$pid".

En cuanto al entrar, debes poner algo así:

if($uid == "boda01"){
echo '<a href="boda_01.html">ENTRA</a>';
}else{
echo '<a href="boda_02.html">ENTRA</a>';
}

Se puede mejorar con un Switch/Case o emitiendo palabras en las variables pero es un parche sencillo que funcionará.

1
rgcrally

He añadido 2 variables distintas y el código está así.

<?php

// http://www.thecodertips.com

if(isset($_POST['user']) && !empty($_POST['pass'])){

$uid = "boda01";
$pid = "1234";
$uid2 = "boda02";
$pid2 = "abcd";

if($_POST['user'] != $uid){
die("Introduzca su nombre");
}
if($_POST['pass'] != $pid){
die("Contraseña incorrecta");
}

if($uid == "boda01"){
echo '<a href="boda_01.html">ENTRA</a>';
}else{
echo '<a href="boda_02.html">ENTRA</a>';
}
}

?>

Pero claro, habrá que añadir otra vez esto con $uid2 lo cual he copiado y nada. no se puede añadir a $uid más variables¿?

if($_POST['user'] != $uid){
die("Introduzca su nombre");
}
1 respuesta
Weahl

#3 Si quieres meter usuarios, lo suyo es que uses una base de datos, porque como tengas que hacerlo por código te va a quedar muy muy extenso...

Aun así ahí solo estás comparando el usuario "boda01" y la primera clave, si metes "boda02" siempre te saltará que haz de introducir un nombre ya que no lo estás controlando.

Deberías pensar seriamente en aprender MySQL para estas cosas.

1 1 respuesta
rgcrally

#4 Gracias, creo que esto es una solución sencilla y me valdría para esto. Entiendo que la mejor manera de hacerlo sea con MySQL.

¿Alguna solución?

1 respuesta
Kiroushi

Como te han dicho por arriba, la implementación es terrible y no tiene ni pies ni cabeza... pero bueno.


switch ($uid) {
    case "boda01":
        echo '<a href="boda_01.html">ENTRA</a>';
        break;
    case "boda02":
        echo '<a href="boda_02.html">ENTRA</a>';
        break;
    default:
        echo 'Nope.avi';
}
Weahl

Tal que así a bote pronto, simplemente añade más usuarios y contraseñas al array y listo, lo demás lo hace solo.

<?php
if(isset($_POST['user']) && !empty($_POST['pass'])){

$uid = array("boda01", "boda02");
$pid = array("1234", "1234");

//Recorre todos los valores de los arrays para comparar usuario y clave
for($i = 0; $i < count($uid); $i++){
	if($_POST['user'] != $uid[$i] || $_POST['pass'] != $pid[$i])
		die("Usuario y/o contraseña incorrectos.")
	else
		echo '<a href="'.$uid[$i].'.html">ENTRA</a>';	//Genera un link según el usuario con el que haya entrado
}
}
?>

EDIT: Me faltaba una llave de cierre xD

RaymaN
$users = array(
    'boda01' => '1234',
    'boda02' => 'abcd'
);

if (isset($users[$_POST['user']]) && $_POST['pass'] == $users[$_POST['user']]) {
    echo "<a href='{$_POST['user']}.html'>ENTRA</a>";
} else {
    echo 'Usuario y/o contraseña incorrectos.';
}
1 2 respuestas
lxn_

#5 Tira de SQLite, es lo más sencillo en estos casos

pekpon

Me quedo con #8 para el tipo de implementación que buscas.
Para algo tan simple no es necesario ningún tipo de SQL....

rgcrally

#8 Muchas gracias RaymaN funciona a la perfección.

Usuarios habituales

  • rgcrally
  • pekpon
  • lxn_
  • RaymaN
  • Weahl
  • Kiroushi