[SOLUCIONADO] Ayuda con base de datos mysql y php

Iniciado por xhc1, Mayo 07, 2017, 05:06:25 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 07, 2017, 05:06:25 PM Ultima modificación: Mayo 08, 2017, 01:20:20 PM por Gabriela
No entiendo que tengo mal me puden ayudar

-la base de datos se llama "vuln"
-las tablas son basicamente name para nombres y pass para contraseñas
-el en html el name de  los input del formulario son llamados igual name y pass
Código: text

<?php
$usuario = $_POST["name"];
$pass = $_POST["pass"];

if(empty($usuario) || empty($pass)){
   header("Location: index.php");

exit();
}
#*****
mysql_connect("localhost","root","miclave") or die("Error al conectar " . mysql_error());
mysql_select_db("vuln") or die ("Error al seleccionar la Base de datos: " . mysql_error());

$result = mysql_query("SELECT * FROM username WHERE name ='" . $usuario . "'");

if($row = mysql_fetch_array($result)){
   if($row["pass"] == $pass){
      session_start();
      $_SESSION["usuario"] = $usuario;
      header("Location: welcome.html");
      else{
         header("Location: index.html");
         exit();
      }
   }else{
header("Location: index.html");
exit();
}


?>

por si no me entienden bien aqui es lo demas
Código: text

<div style="position: absolute; right: 10px; top: 40px;">
         <div style = "width:300px; border: solid 1px #333333; " align = "left">
            <div style = "background-color:#333333; color:#FFFFFF; padding:2px; "><b>Login</b></div>

            <div style = "margin:30px">
               
               <form action = "login.php" method = "POST">
                  <label>Usuario</label><input type = "text" name = "name" id="name" class = "box"/><br /><br />
                  <label>Password</label><input type = "password" id="pass" name = "pass" class = "box" /><br/><br />
                  <input type = "submit" value = " Submit "/><br />
               </form>
               
               <div style = "font-size:11px; color:#cc0000; margin-top:10px"><?php echo "Error no se pudo conectar"; ?></div>

            </div>

         </div>

      </div>


El problema esque cuando mando los datos por el formulario simplemente carga la pagina php  no ocurre nada mas....


Primeramente, no deberias de utilizar los header location y por otro lado no vale de nada que pongas el session_start si despues cargas una pagina en html en la redireccion ya que cualquiera podrá entrar en la pagina html sin credenciales poniendo directamente la ruta en la url. Yo repasaría para que sirven la sesiones.

Tienes un fallo de syntaxis en la linea 21, lo sabrias si habilitases los errores en tu apache. No se puede desarrollar codigo en condiciones si no habilitas eso ya que no sabes los errores de codigo que tienes. Falta una llave de apertura antes del else "}"

Por otro lado, mirate lo que son los sqlinjection porque tienes uno de libro, que hará que cualquiera pueda acceder a partes privadas de tu sistema. Es importante sanitizar todos los datos que vengan del usuario.

El session_start() te recomendaria ponerlo al principio del todo y las cosas que tengan que ver con conexion a la mysql y la base de datos en otro php y hacer un include, si no vas a estar copiando y pegando esas lineas mil veces a lo largo del codigo que vayas desarrollando.

Lo siento, no contesto dudas por MP, si tienes dudas las planteas en el foro.

Gracias anima negra por la seguridad igualmente exelente aunque basicamente ese codigo va a ser un laboratorio de pruebas de penetracion de todo tipo, el problema esq no tengo nocion de php 7  y mysql, por eso pregunto si estaba bien o no.

Como habilito los errores en apache??

En el apache.conf tienes una linea donde pone LogLevel y un valor. Estos son los posibles valores:

Código: text

emerg, alert, crit, error, warn, notice, info, debug


Esto dejará en el archivo de logs, el apache.conf especifica también donde se están guardando los archivos de logs. (Recuerda que al cambiar la configuración del servidor deberás reiniciarlo para que efectúe los cambios.)

Para que los errores te salgan en la pagina que cargas, cambia en el php.ini el display_errors:

Código: text

display_errors = 1


De forma que cuando cargues una pagina con un error de sintaxis, te devolverá un error en forma de texto en lugar de una pagina en blanco. Importante, el poner esto solo en los sistemas de desarrollo. Si te dejas esto habilitado en un sistema en producción estarás dando a los atacantes muchísima información para una posible explotación.

Si no ha quedado algo claro me comentas,
saludos.

Lo siento, no contesto dudas por MP, si tienes dudas las planteas en el foro.

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
En el apache.conf tienes una linea donde pone LogLevel y un valor. Estos son los posibles valores:

Código: text

emerg, alert, crit, error, warn, notice, info, debug


Esto dejará en el archivo de logs, el apache.conf especifica también donde se están guardando los archivos de logs. (Recuerda que al cambiar la configuración del servidor deberás reiniciarlo para que efectúe los cambios.)

Para que los errores te salgan en la pagina que cargas, cambia en el php.ini el display_errors:

Código: text

display_errors = 1


De forma que cuando cargues una pagina con un error de sintaxis, te devolverá un error en forma de texto en lugar de una pagina en blanco. Importante, el poner esto solo en los sistemas de desarrollo. Si te dejas esto habilitado en un sistema en producción estarás dando a los atacantes muchísima información para una posible explotación.

Si no ha quedado algo claro me comentas,
saludos.
Mi respeto mano gracias