Foros del Web » Programando para Internet » PHP »

Me ayudan a entender este codigo generado por dreamweaver

Estas en el tema de Me ayudan a entender este codigo generado por dreamweaver en el foro de PHP en Foros del Web. Hola! por favor me ayudarian a comprender el siguiente codigo generado por dreamweaver para crear el inicio de sesion de un usuario. Yo pondre lo ...
  #1 (permalink)  
Antiguo 17/07/2012, 01:04
Avatar de evairdesign  
Fecha de Ingreso: abril-2012
Mensajes: 54
Antigüedad: 12 años
Puntos: 7
Me ayudan a entender este codigo generado por dreamweaver

Hola! por favor me ayudarian a comprender el siguiente codigo generado por dreamweaver para crear el inicio de sesion de un usuario.

Yo pondre lo que entiendo, si esta mal, por favor diganmelo y si pueden agregar información y responder mis dudas, exelente

En el codigo estan mis dudas, en forma de comentario, muchas gracias
Código PHP:
Ver original
  1. <?php
  2. // Se llama al archivo wamp_login que contiene los datos para crear conexion con la bd
  3.  require_once('Connections/wamp_login.php');
  4.  ?>
  5.  
  6. <?php
  7. // Funcion que extrae el texto de una variable...aqui tengo mis dudas, no estoy seguro de que esa se la principal funcion
  8. if (!function_exists("GetSQLValueString")) {
  9. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  10. {
  11.   if (PHP_VERSION < 6) {
  12.     $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  13.   }
  14.  
  15.   $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  16.  
  17.   switch ($theType) {
  18.     case "text":
  19.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  20.       break;    
  21.     case "long":
  22.     case "int":
  23.       $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  24.       break;
  25.     case "double":
  26.       $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  27.       break;
  28.     case "date":
  29.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  30.       break;
  31.     case "defined":
  32.       $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  33.       break;
  34.   }
  35.   return $theValue;
  36. }
  37. }
  38. ?>
  39. <?php
  40. // Se crea la sesion que identifica al usuario.
  41. if (!isset($_SESSION)) {
  42. }
  43.  
  44. // recibe el action del formulario y lo identifica como la misma direccion que se esta usando actualmente con ['PHP_SELF']
  45. $loginFormAction = $_SERVER['PHP_SELF'];
  46.  
  47. // Aqui no entiendo que es $_GET['accesscheck'] ¿me podria alguien decir de donde sale eso?
  48. if (isset($_GET['accesscheck'])) {
  49.   $_SESSION['PrevUrl'] = $_GET['accesscheck'];
  50. }
  51.  
  52. if (isset($_POST['inputUser'])) {
  53.   $loginUsername=$_POST['inputUser'];
  54.   $password=$_POST['inputPass'];
  55.   $MM_fldUserAuthorization = "";
  56.   $MM_redirectLoginSuccess = "usuario.php";
  57.   $MM_redirectLoginFailed = "404";
  58.   $MM_redirecttoReferrer = false;
  59.   mysql_select_db($database_wamp_login, $wamp_login);
  60.  
  61.   $LoginRS__query=sprintf("SELECT tableUsuario, tablePassword FROM tmp_login WHERE tableUsuario=%s AND tablePassword=%s",
  62.  
  63. // ¿que hace la funcion GetSQLValueString especificamente en esta parte? ¿sacar el nombre de usuario del input? si es asi porque se pone como parte de la sentencia SQL
  64.     GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
  65.    
  66.   $LoginRS = mysql_query($LoginRS__query, $wamp_login) or die(mysql_error());
  67.   $loginFoundUser = mysql_num_rows($LoginRS);
  68.   if ($loginFoundUser) {
  69.      $loginStrGroup = "";
  70.    
  71.     if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
  72.     //declare two session variables and assign them
  73.     $_SESSION['MM_Username'] = $loginUsername;
  74.     $_SESSION['MM_UserGroup'] = $loginStrGroup;      
  75.  
  76.     if (isset($_SESSION['PrevUrl']) && false) {
  77.       $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; 
  78.     }
  79.  
  80.     header("Location: " . $MM_redirectLoginSuccess );
  81.   }
  82.   else {
  83.     header("Location: ". $MM_redirectLoginFailed );
  84.   }
  85. }
  86.  
  87. ?>
  88. <!doctype html>
  89. <html>
  90. <head>
  91. <meta charset="utf-8">
  92. <title>..::Viden::.. Colegios en Chile</title>
  93. </head>
  94.  
  95. <body>
  96. <form name="form1" method="POST" action="<?php echo $loginFormAction; ?>">
  97.   <p>
  98.     <label for="textfield">Usuario:</label>
  99.     <input type="text" name="inputUser" id="textfield">
  100.   </p>
  101.   <p>
  102.     <label for="textfield2">Password:</label>
  103.     <input type="text" name="inputPass" id="textfield2">
  104.   </p>
  105.   <p>
  106.     <input type="submit" name="button" id="button" value="Iniciar Sesión">
  107.   </p>
  108. </form>
  109. </body>
  110. </html>
__________________
Todo debe hacerse lo más simple posible pero no más simple
  #2 (permalink)  
Antiguo 17/07/2012, 06:29
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Me ayudan a entender este codigo generado por dreamweaver

por lo que veo, la función GetSQLValueString trasforma y filtra el valor de la variable para pasarlo al SQL, evitando así SQL Inyection, francamente yo usaría PDO

$_GET['accesscheck'] me parece un intento de DW por mantener el HTTP_REFERER que algunos navegadores no soportan y comúnmente eliminado por proxys y firewalls

¿más dudas?: pregunte y especifique la línea

lo ideal es que aprenda desde 0, con un tutorial, francamente los generadores de código al final vuelven difícil el mantener el código, saludos

Puntos de seguridad a considerar:

-los magic quotes están obsoletos, debe evitar su uso en servidores aún así el script esté preparado
-estudie sobre seguridad en PHP: SQL Inyection, XSS, CSRF, RFI, Upload Inyection
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 17/07/2012, 12:46
Avatar de evairdesign  
Fecha de Ingreso: abril-2012
Mensajes: 54
Antigüedad: 12 años
Puntos: 7
Respuesta: Me ayudan a entender este codigo generado por dreamweaver

Cita:
por lo que veo, la función GetSQLValueString trasforma y filtra el valor de la variable para pasarlo al SQL, evitando así SQL Inyection, francamente yo usaría PDO
Eso mismo imaginaba, por que intente hacer SQL inyection básico y quitando el GetSQLValueString funcionaba.

Cita:
¿más dudas?: pregunte y especifique la línea
¿Programar con CLASES hace mas seguro el codigo? o ¿es solo para hacerlo mas ordenado?
Cita:
lo ideal es que aprenda desde 0, con un tutorial, francamente los generadores de código al final vuelven difícil el mantener el código, saludos
Sé programar en php, es solo que he aprendido a programar de manera muy desordenada :/ pero ya voy mejorando

Cita:
Puntos de seguridad a considerar:

-los magic quotes están obsoletos, debe evitar su uso en servidores aún así el script esté preparado
-estudie sobre seguridad en PHP: SQL Inyection, XSS, CSRF, RFI, Upload Inyection
No sabia eso de los "magic quotes" gracias, lo cambiaré y con respecto a seguridad, algo he leído, creo que lo básico, pero ya veré si se me presenta un problema en mi proyecto y aprenderé de ello
__________________
Todo debe hacerse lo más simple posible pero no más simple
  #4 (permalink)  
Antiguo 17/07/2012, 14:17
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Me ayudan a entender este codigo generado por dreamweaver

POO (programación orientada a objetos) es sólo un paradigma, usar clases no te proporcionará seguridad y hacerlo de mala forma no evitará código desordenado, poco a poco y siguiendo las buenas practicas y patrones de diseño aprenderás a organizar mejor el código, cuando inicié mi código tampoco era una belleza

te recomiendo iniciar con PDO, así te familiarizas un poco con usar objetos en vez de puras funciones, y poco a poco aprendes POO, luego aventurate en un Framework MVC, Codeigniter es el ideal para empezar, mi favorito es Symfony2. pero eso amigo lo elije usted, existe gran variedad y lo justo es indicarselo
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 17/07/2012, 14:56
Avatar de evairdesign  
Fecha de Ingreso: abril-2012
Mensajes: 54
Antigüedad: 12 años
Puntos: 7
Respuesta: Me ayudan a entender este codigo generado por dreamweaver

Ok men! Tengo todo mas clarito Gracias
__________________
Todo debe hacerse lo más simple posible pero no más simple

Etiquetas: dreamweaver, entender, formulario, html, mysql, sql, variables, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:25.