Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/11/2014, 13:27
Avatar de manuparquegiralda
manuparquegiralda
 
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 10 meses
Puntos: 39
Respuesta: login redireccionado

Obviamente el fallo lo tienes en las sintaxis del query a mysql, sinceramente, sugerencias para mejorar el código, desde mi punto de vista, muchas, no entiendo muy bien porque haces tantas cosas para un script tan sencillo, si lo único que pretendes es validar un usuario.

- No es para nada necesario que habras y cierres etiquetas <?php ?> si no hay código en otro lenguaje entre una y otra.

- Deberías haber puesto el código del archivo que incluyes al principio del script, ya que hay variables como la de $contactos que no se de donde y porque salen.

- No sé porque preguntas si la función GetSQLValueString() no existe para declararla en lugar de declararla directamente.

- Si ya conoces tu versión PHP, porque andar haciendo comprobaciones de la versión.

- ¿Por qué compruebas si hay variable de sesión para declarar el session_start()?, decláralo y punto.

- Intenta no crear arcivos php con espacios en el nombre, en alguna ocasión me he visto afectado por tonterías así, por ejemplo en lugar de "acceso no permitido.php" llámalo "acceso_no_permitido.php".

- Evita las tablas en HTML, a Google no le hacen mucha gracia según tengo entendido.

No sé, me voy a molestar un poco para darte una guía de como trabajo yo, también fui novato y en este foro hubo gente muy buena que me ayudó bastante.

Código PHP:
Ver original
  1. <?php session_start();
  2.  
  3. if((isset($_POST['user']))&&(isset($_POST['pass']))){
  4.     // CONECTAS CON LA BASE DE DATOS //
  5.     $mysqli = new mysqli("tu dominio", "tu usuario", "tu password", "tu base de datos");
  6.     $mysqli->set_charset("utf8");
  7.     // PREGUNTAS SI EXISTE EL USUARIO CON EL PASSWORD //
  8.     $p = $mysqli->query("SELECT * FROM contactos WHERE nombre_usuario = '".$_POST['user']."' AND password = '".$_POST['pass']."'");
  9.     $aUser = $p->fetch_assoc();
  10.     if(!$aUser['nombre_usuario']){
  11.         // SI NO SE EXTRAEN DATOS DE LA CONSULTA MOSTRAMOS EL ERROR //
  12.         $error = "El usuario o el password no son correctos.";
  13.     }else{
  14.         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  15.         // CREAMOS VARIABLES DE SESSION CON EL USUARIO ESTE DEBERÍA SER ÚNICO PARA QUE EN LA PÁGINA DE DESTINO /////
  16.         // PUEDAS VOLVER A HACER LA CONSULTA A LA BASE DE DATOS PARA EXTRAER LOS DATOS DEL USUARIO O TAMBIÉN ////////
  17.         // PUEDES CREAR UNA VARIABLE DE SESSION PARA CADA DATO DE LA BASE DE DATOS, PERO SI TIENES MUCHOS CAMPOS //
  18.         // PUEDE ACABAR SIENDO UN POCO LIOSO LA VERDAD, ESO LO ELIGES TÚ. YO TRABAJO CON CLASES POR LO QUE LO /////////
  19.         // GUARDARÍA TODOS LOS DATOS NECESARIOS EN UN OBJETO QUE SERIALIZARÍA EN UNA VARIABLE DE SESSION QUE  //////
  20.                 // PUEDA LEER EN CADA PÁGINA SIN NECESIDAD DE DE VOLVER A CONSULTAR A LA BASE DE DATOS NI DE TENER UN ///////
  21.         //  NÚMERO INMENSO DE VARIABLES DE SESSION /////////////////////////////////////////////////////////
  22.         //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  23.         $_SESSION['user'] = $aUser['nombre_usuario'];
  24.         header("location:modificar.php");
  25.         exit();
  26.     }
  27. }else{
  28.     $error = "Tienes que rellenar todos los campos.";
  29. }
  30.  
  31. ?>
  32.  
  33.  
  34. <!doctype html>
  35. <html>
  36. <head>
  37. <meta charset="utf-8">
  38. <title>Loguin</title>
  39. <style type="text/css">
  40. body {
  41.     margin:0px;
  42.     padding:0px;
  43.     padding-top:20px;
  44. }
  45. .table{
  46.     position:relative;
  47.     display:table;
  48.     width:500px;
  49.     margin:0 auto;
  50. }
  51. .table > div{
  52.     position:relative;
  53.     display:table-row;
  54. }
  55. .cell_izq{
  56.     position:relative;
  57.     display:table-cell;
  58.     width:50%;
  59.     text-align:right;
  60.     vertical-align:middle;
  61.     padding:5px;
  62.     font-weight:bold;
  63. }
  64. .cell_der{
  65.     position:relative;
  66.     display:table-cell;
  67.     width:50%;
  68.     text-align:left;
  69.     vertical-align:middle;
  70.     padding:5px;
  71. }
  72. input[type=text],input[type=password]{
  73.     width:200px;
  74. }
  75. input[type=submit]{
  76.     font-weight:bold;
  77.     color:#FFF;
  78.     background:#42349F;
  79.     border:solid 1px #CCC;
  80. }
  81. .cont_button{
  82.     position:relative;
  83.     display:table;
  84.     width:500px;
  85.     margin:0 auto;
  86.     text-align:center;
  87. }
  88. input[type=submit]:hover{
  89.     color:#42349F;
  90.     background:#EDEDED;
  91. }
  92. p{
  93.     text-align:center;
  94.     margin-top:10px;
  95.     margin-bottom:10px;
  96.     font-weight:bold;
  97.     color:#F00;
  98. }
  99. </style>
  100. </head>
  101.  
  102. <body>
  103. <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  104. <div class="table">
  105.     <div>
  106.         <div class="cell_izq">
  107.             Usuario:
  108.         </div>
  109.         <div class="cell_der">
  110.             <input type="text" name="user" />
  111.         </div>
  112.     </div>
  113.     <div>
  114.         <div class="cell_izq">
  115.             Contraseña:
  116.         </div>
  117.         <div class="cell_der">
  118.             <input type="password" name="pass" />
  119.         </div>
  120.     </div>
  121. </div>
  122. <div class="cont_button">
  123.     <input type="submit" value="Enviar">
  124. </div>
  125. <p><?php echo $error; ?></p>
  126. </body>
  127. </form>
  128. </html>


Prueba con esta página que te he hecho, debería valerte, tan solo tienes que cambiar la conexión a la base de datos y modificar los campos en las consultas si yo los he puesto mal.
__________________
Diseño Web - Arisman Web

Última edición por manuparquegiralda; 29/11/2014 a las 13:51