Foros del Web » Programando para Internet » PHP »

PHP OO Que debo mejorar

Estas en el tema de Que debo mejorar en el foro de PHP en Foros del Web. Hola, llevo 3 meses practicando php y acabo de hacer ese código, y quisiera saber que puedo mejorar con el código, o que me recomiendan ...
  #1 (permalink)  
Antiguo 07/07/2011, 15:20
 
Fecha de Ingreso: febrero-2010
Ubicación: Lima-Perú
Mensajes: 10
Antigüedad: 14 años, 8 meses
Puntos: 0
Que debo mejorar

Hola, llevo 3 meses practicando php y acabo de hacer ese código, y quisiera saber que puedo mejorar con el código, o que me recomiendan para mejorarlo y mejorarme como programador, esto son los código.
Sirve para verificar si el usuario está registrado o no.
Y deben modificar la base la base de datos con su usuario y clave.

Login.php
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Documento sin título</title> 
<link href="estilos.css" type="text/css" rel="stylesheet" /> 
<script type="text/javascript" language="javascript" src="funciones.js"></script> 
 
</head> 
<body> 
<h1>Comprobar el Registro</h1> 
 
<center> 
<form method="post" action="" name="form"> 
<table border="0"> 
<tr> 
<th colspan="2">Registrado?</th> 
</tr> 
<tr> 
<td width="100" height="50">Usuario</td><td width="165"><input type="text" name="user" /></td> 
</tr> 
<tr> 
<td width="100" height="50">Password</td><td><input type="password" name="pass" /></td> 
</tr> 
<tr> 
<td width="50" colspan="2">¿Olvidaste tu contraseña?  
<input type="submit" name="login" value="Log-in" style="float:right;" onclick="validar()"/></td> 
</tr> 
</table> 
</form> 
 
<?php 
require_once('class.php'); 
$Bd= new Bd('sm','root',''); 
 
if(isset(
$_POST["login"]) && $_POST["login"]=="Log-in"){ 
$log= new Login(); 
$log->registrado($_POST["user"],$_POST["pass"]); 
 

?>
 
</center> 
</body> 
</html>
--------------------------------
estilos.css
Código:
/*** Estilos de login.php ***/
body{
   background:#C96;
   padding:7px;
   font: bold 15px "Palatino Linotype", "Book Antiqua", Palatino, serif;
}
table{
   background:#96F;
   border-radius:7px;
}
td{
   text-align:center;
}
------------------------------
funciones.js
Código:
function validar(){ 
   var form = document.form; 
   if(form.user.value==0){ 
      alert("ingrese su nombre"); 
      form.user.value=""; 
      form.user.focus(); 
      return false; 
   } 
   if(form.pass.value==0){ 
      alert("ingrese su password"); 
      form.pass.value=""; 
      form.pass.focus(); 
      return false; 
   } 
   form.submit(); 
}
-------------------------------------
class.php
Código PHP:
<?php 
class Bd
   private 
$bd
   private 
$bduser
   private 
$bdpass
    
   public function 
__construct($nombrebd,$bdusuario,$bdpassword){ 
      
$this->bdpass=$bdpassword
      
$this->bduser=$bdusuario
      
$this->bd=$nombrebd
      
mysql_connect('localhost',$bdusuario,$bdpassword)or die('No te conectaste :('); 
      
mysql_select_db($nombrebd)or die('no existe la base de datos'); 
   } 

class 
Login
   private 
$user
   private 
$pass
    
   public function 
registrado($usuario,$password){ 
      
$this->user=$usuario
      
$this->pass=$password
      
$sql="SELECT *  
         FROM lista  
         WHERE user='"
.$usuario."'  
         AND pass='"
.$password."'"
      
$query=mysql_query($sql); 
      
$con="0"
      while(
$filas=mysql_fetch_array($query)){ 
         
$con++; 
      } 
      if(
$con=="0"){ 
         echo 
"Usuario no Registrado<br>"
         echo 
"<a href='registro.php'>Registrarme!!!</a>"
      }else{ 
         echo 
"Aquél Usuario está Registrado!!"
      }    
   } 

?>
-------------------------------------------
Base de datos:
Código:
CREATE DATABASE sm; 
USE sm; 
CREATE TABLE `lista` ( 
  `id` int(11) NOT NULL AUTO_INCREMENT, 
  `user` varchar(50) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL, 
  `pass` varchar(50) COLLATE utf8_unicode_ci NOT NULL, 
  `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL, 
  PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 
 
INSERT INTO `lista` VALUES (1,'Juan','hola','[email protected]'); 
INSERT INTO `lista` VALUES (2,'fito','1234','[email protected]');
Haber si me dicen que debo mejorar, porque puede que me mal acostumbre en hacer algo erróneo y deseo mejorarlo.
  #2 (permalink)  
Antiguo 07/07/2011, 16:06
Avatar de JDEM  
Fecha de Ingreso: octubre-2008
Ubicación: www....
Mensajes: 154
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: Que debo mejorar

Saludos amigo te felicito por la iniciativa que esta tomando seguro te ayudara a mejorar, aunq considero que cada programador tiene su estilo y su criterio para hacer las cosas, tienes varios detallitos que no estan mal pero yo haria diferente mi recomendacion acostumbrate a encriptar los pass!!!
__________________
Visitanos http://www.nestsystems.com.ve, mucho mas que solo paginas web.
  #3 (permalink)  
Antiguo 07/07/2011, 16:29
Avatar de ylellan  
Fecha de Ingreso: mayo-2010
Ubicación: en un lugar de Veracruz
Mensajes: 432
Antigüedad: 14 años, 5 meses
Puntos: 36
Respuesta: Que debo mejorar

corazon yo tambien pedi ayuda a algo similar mira esto y podras ver q consejos me dieron. Besos mi amor
  #4 (permalink)  
Antiguo 07/07/2011, 17:03
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 9 meses
Puntos: 155
Respuesta: Que debo mejorar

Muy buena pregunta carnal!! es dificil saber cuando no sera necesario ponerse a matar cucarachas a cañonazos o cuando es cuestion de profesionalizarse como phpero que te aconsejaria??


veo que utilzas las funciones nativas para ejecutar tus consultas ,¿que tal adodb o pdo?
veo que usas javascript puro, que tal jquery?

no veo seguridad en tu logeo , que tal investigar un poco acerca de inyecciones sql?
veo que en tu Login.php se mezcla php directamente con el html , bien podrias utilizar unsistema de plantillas para esto , o aun mejor , utilizar mvc para hacer todo este proceso.



Son sugerencias, opiniones en si tu codigo esta bien (tal vez si es necesario checar lo de las inyecciones) pero si quieres mejorar como phpero conviene entrarle a estos temas para que no cualquier chango llegue y te quiera chorear


te dejo un articulo que alguna vez lei que se me hizo muy enriquecedor

http://phpsenior.blogspot.com/2006/1...p-debemos.html
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #5 (permalink)  
Antiguo 07/07/2011, 17:16
 
Fecha de Ingreso: febrero-2010
Ubicación: Lima-Perú
Mensajes: 10
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Que debo mejorar

Muchas gracias por sus respuestas.
Sobre encriptar las pass aún no lo veo estoy por verlo, pero creo que se usa md5 no?, eso usé para subir archivos al servidor para ponerle una identificación,

Cita:
Iniciado por ylellan Ver Mensaje
corazon yo tambien pedi ayuda a algo similar mira [URL="http://www.forosdelweb.com/f18/ayuda-hacer-mas-seguro-mi-login-858793/"]esto[/URL] y podras ver q consejos me dieron. Besos mi amor
Lo voy a checar, Gracias! :D
Cita:
Iniciado por mogurbon Ver Mensaje
Muy buena pregunta carnal!! es dificil saber cuando no sera necesario ponerse a matar cucarachas a cañonazos o cuando es cuestion de profesionalizarse como phpero que te aconsejaria??


veo que utilzas las funciones nativas para ejecutar tus consultas ,¿que tal adodb o pdo?
veo que usas javascript puro, que tal jquery?

no veo seguridad en tu logeo , que tal investigar un poco acerca de inyecciones sql?
veo que en tu Login.php se mezcla php directamente con el html , bien podrias utilizar unsistema de plantillas para esto , o aun mejor , utilizar mvc para hacer todo este proceso.

Son sugerencias, opiniones en si tu codigo esta bien (tal vez si es necesario checar lo de las inyecciones) pero si quieres mejorar como phpero conviene entrarle a estos temas para que no cualquier chango llegue y te quiera chorear


te dejo un articulo que alguna vez lei que se me hizo muy enriquecedor

[url]http://phpsenior.blogspot.com/2006/11/los-desarrolladores-php-debemos.html[/url]
No sabía nada de adodb o pdo, sobre lo del jquery si me gustaría usar eso voy a investigar que puedo meterle , y sobre el logeo, en realidad no hace eso porque no abrí sesiones xD, pero es bueno que me hagan recordar lo de las inyecciones en el caso que use sesiones(el nombre login.php era porque en un comienzo iba a hacer una sesió, pero cambié de parecer ), y gracias por el link.

.:EDITO:.
Sobre las plantillas eso del código php que se mezcla con html es algo similar al sistema que usa phpbb3?(La unica referencia que tengo de html y php separado el cual es reemplazado por llaves), acepto mas recomendaciones y críticas.

Última edición por Jeae; 07/07/2011 a las 17:24
  #6 (permalink)  
Antiguo 07/07/2011, 17:32
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Que debo mejorar

No se refiere a las sesiones, si no a esto:

Código:
      $this->user=$usuario; 
      $this->pass=$password; 
      $sql="SELECT *  
         FROM lista  
         WHERE user='".$usuario."'  
         AND pass='".$password."'";

Yo en vez de poner mi nombre de usuario podría poner por ejemplo "a OR 1=1" y comentar el resto y tu SQL haria un SELECT * sin condiciones xD. Investiga, como decían, sobre inyecciones SQL.

Saludos!
  #7 (permalink)  
Antiguo 07/07/2011, 17:59
 
Fecha de Ingreso: febrero-2010
Ubicación: Lima-Perú
Mensajes: 10
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Que debo mejorar

Cita:
Iniciado por FFabre Ver Mensaje
No se refiere a las sesiones, si no a esto:

Código:
      $this->user=$usuario; 
      $this->pass=$password; 
      $sql="SELECT *  
         FROM lista  
         WHERE user='".$usuario."'  
         AND pass='".$password."'";

Yo en vez de poner mi nombre de usuario podría poner por ejemplo "a OR 1=1" y comentar el resto y tu SQL haria un SELECT * sin condiciones xD. Investiga, como decían, sobre inyecciones SQL.

Saludos!
Creo que soy lento porque no entendí lo del "a OR 1=1", si lo escribes puede que te entienda xD
  #8 (permalink)  
Antiguo 07/07/2011, 18:02
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Que debo mejorar

Cita:
Iniciado por Jeae Ver Mensaje
Creo que soy lento porque no entendí lo del "a OR 1=1", si lo escribes puede que te entienda xD
Suponete que en el campo para llenar de usuario yo escribo:

' OR 1=1 //

Fijate que pasaría en tu código ;)

Saludos!
  #9 (permalink)  
Antiguo 08/07/2011, 06:42
 
Fecha de Ingreso: febrero-2010
Ubicación: Lima-Perú
Mensajes: 10
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Que debo mejorar

Ya entendí sobre las inyecciones sql, gracias por aclararmelo con el ejemplo xD

Etiquetas: html, mejorar, mysql
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 14:20.