Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Validar un usuario

Estas en el tema de Validar un usuario en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola amigos de forosdelweb, soy nuevo en esto, es mas acabo de registrarme ya me di cuenta que es un exelente foro. quisiera ver si ...
  #1 (permalink)  
Antiguo 31/12/2007, 18:00
 
Fecha de Ingreso: diciembre-2007
Mensajes: 12
Antigüedad: 16 años, 4 meses
Puntos: 0
Validar un usuario

Hola amigos de forosdelweb, soy nuevo en esto, es mas acabo de registrarme ya me di cuenta que es un exelente foro.

quisiera ver si alguien me puede ayudar, con este codido de php en 3 capas u OO como lo entiendan, resulta que desde el index(pagina inicial) estoy enviando por metodo post un Usuario y una contraseña, pero no estoy muy claro en la comunicación de las clases de conexion y Usuario. de todas maneras ahi les dejo el codigo a ver si alguien me ayuda. gracias de antemano.
EL ERROR QUE ME ENVIA AL EJECUTARLO ES EL SIGUIENTE:
Fatal error: Call to a member function ConectarOracle() on a non-object in C:\AppServ\www\taller pactica\AD\ADUsuario.php on line 15
NOTA:
lo estoy haciendo mysqls aunque la funcion se llame conexionOracle.


Autentificando
<?php session_start(); ?>

<?php
require_once 'class.Usuario.php';

if(isset($_POST['enviar'])) {
$usuario_A = $_POST['usuario_txt'];
$clave_A = $_POST['contrasena_txt'];

$obj = new UsuarioRN();
$obj->setUsuario($usuario_A);
$obj->setClave($clave_A);


if ($obj->verificarUsuario()){
$_SESSION['usuario']= $obj->getUsuario();
$_SESSION['clave']= $obj->getClave();
?>

ClassUsuario

<?php

require_once '../AD/ADUsuario.php';

class UsuarioRN{

private $Usuario;
private $Clave;

public function UsuarioRN(){

}

public function setUsuario ($newVal) {
$this->Usuario = $newVal;
}

public function setClave ($newVal) {
$this->Clave = $newVal;
}

public function getUsuario () { return $this->Usuario; }
public function getClave () { return $this->Clave; }

public function verificarUsuario() {
$sql = new UsuarioSQL();
$valido = $sql->validarUsuario($this->Usuario);

return $valido;
}


}
?>


ClassADUsuario

<?php

require_once 'ConeccionOracle.php';

class UsuarioSql{

private $sql;

public function UsuarioSql() {
$this->sql = new ConeccionOracle("localhost","root","root","reserva _pc_online");
}


public function validarUsuario($usuario){
$sql->ConectarOracle();
$sql->consultarBD ("select * from usuarios where rut ='".$usuario."'");
if ($sql->obtenerdatosBD()){
echo"usuario existe";
}else{
echo "usuario no existe";
}
$sql->limpliaconsulta();
$sql->cerrarConexion();
}
}
?>

Finalmente la conexion
<?php
class ConeccionOracle{
private $host;//servidor donde se encuentra la base de datos
private $usuario;//nombre de usuario de la base de datos
private $contrasena;//password de la base de datos
private $database;//nombre de la base de datos a la que quieres acceder
/////////////////////////////////////////////////////////////////////////
protected $conexion;//nombre de la base de datos a la que quieres acceder
protected $consulta;//aquí se guarda las consultas que se realizan
private $resultado;//aquí se guarda las consultas que se realizan

//constructor, donde se inicializan las variables
public function ConeccionOracle($host,$usuario,$contrasena,$databa se){
$this->host=$host;
$this->usuario=$usuario;
$this->contrasena=$contrasena;
$this->database=$database;
/*if (!isset($this->conexion)){
$this->conexion = (mysql_connect($this->host,$this->usuario,$this->contrasena))or die (mysql_error());
mysql_select_db("reserva_pc_online",$this->conexion)or die (mysql_error());

}*/

}

//función para conectarnos a la base de datos
public function ConectarOracle(){
//realizamos la conexión a la base de datos
if ($this->conexion = mysql_connect($this->host,$this->usuario,$this->contrasena)){
//intentamos acceder a la base de datos que deseamos
if (mysql_select_db($this->database,$this->conexion)){
echo "conexion correcta";
}else{
echo "no se puede seleccionar la base de datos";
}
}else{
echo "no se puede conectar a la base de datos";
}
}

//function que realiza consultas a la bd
public function consultarBD($query){
//aquí se realizan las consultas a la base de datos
$this->consulta = mysql_query($query,$this->conexion);
}
//obtener resultados de la consulta
public function obtenerdatosBD(){
//aquí se obtienen los datos de la consulta
$this->consulta = mysql_fetch_array($this->consulta);
return $this->resultado;
}
//cerramos la conexión con la base de datos
public function cerrarConexion(){
mysql_close($this->conexion);
}
//libera el contenido que se encuentra en el atributo
public function limpliaconsulta(){
mysql_free_result($this->consulta);
}
/*public function closeConnection(){
OCILogoff($this->conn);
}*/


}


?>
  #2 (permalink)  
Antiguo 02/01/2008, 01:22
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Re: Validar un usuario

Aver primero aprende a ordenar bien el codigo :)

Código:
<?php
	require_once 'ConeccionOracle.php';

	class UsuarioSql{
	
		private $sql;
	
		public function UsuarioSql() {
			$this->sql = new ConeccionOracle("localhost","root","root","reserva _pc_online");
		}
	
	
		public function validarUsuario($usuario){
			
			$sql->ConectarOracle();
			$sql->consultarBD ("select * from usuarios where rut ='".$usuario."'");
			
			if ($sql->obtenerdatosBD()){
				echo"usuario existe";
			}else{
				echo "usuario no existe";
			}
			
			$sql->limpliaconsulta();
			$sql->cerrarConexion();
		}
	}
?>
Asi es mejor ;)
Aver linia 15:

Código:
$sql->ConectarOracle();
Y ahora esto:

Código:
private $sql;

...

$this->sql = new ConeccionOracle("localhost","root","root","reserva _pc_online");
Ahora intentalo asi: :)

Código:
private $sql = null;


.....

$this->sql->ConectarOracle();
			$this->sql->consultarBD ("select * from usuarios where rut ='".$usuario."'");
			
			if ($this->sql->obtenerdatosBD()){
				echo"usuario existe";
			}else{
				echo "usuario no existe";
			}
			
			$this->sql->limpliaconsulta();
			$this->sql->cerrarConexion();
Y otra cosa:

Código:
$this->sql->consultarBD ("select * from usuarios where rut ='".$usuario."'");
Imaginate esto:

Código:
$usuario == 'or 1=1--
Mala cosa no :)

Intentalo asi:

Código:
public function validarUsuario($usuario == null){
    if(!is_string($usuario)){
        throw new Mi_Exception("El nomber del usuario no es valido");
    }

    $usuario = htmlspecialchars(addslashes(trim($usuario)));

    ...
}
Y un consejo usa PDO :)
  #3 (permalink)  
Antiguo 02/01/2008, 20:03
 
Fecha de Ingreso: diciembre-2007
Mensajes: 12
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Validar un usuario

Gracias Bulter por responder a mis dudas, y gracias por los consejos disculpa por el desorden resulta que al pegar el codigo se me desordenó. por que en phpdesigner lo tengo bien ordenado.

bueno te cuento que al retirar el $this-> en la linea 15 y al ejecutarlo me tira este error.
Fatal error: Call to a member function ConectarOracle() on a non-object in C:\AppServ\www\taller pactica\AD\ADUsuario.php on line 17.

bueno voy aseguir probando tus otros consejos haber si logro algo.
  #4 (permalink)  
Antiguo 02/01/2008, 20:23
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Re: Validar un usuario

NO no tienes que quitar el $this->

Código PHP:
<?php

require_once 'ConeccionOracle.php';

    class 
UsuarioSql{
    
        private 
$sql;
        
        public function 
UsuarioSql() {
            
$this->sql = new ConeccionOracle("localhost","root","root","reserva _pc_online");
        }
        
        
        public function 
validarUsuario($usuario){
            
$this->sql->ConectarOracle();
            
$this->sql->consultarBD ("select * from usuarios where rut ='".$usuario."'");
            if (
$sql->obtenerdatosBD()){
                echo
"usuario existe";
            }else{
                echo 
"usuario no existe";
            }
            
$this->sql->limpliaconsulta();
            
$this->sql->cerrarConexion();
        }
    }
?>
  #5 (permalink)  
Antiguo 02/01/2008, 20:35
 
Fecha de Ingreso: diciembre-2007
Mensajes: 12
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Validar un usuario

Bulter gracias por tu paciencia.

este es el error que me tira.

conexion correcta
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\taller pactica\AD\ConeccionOracle.php on line 90
Usuario no Existe



y el usuario si existe y lo estoy viendo por la consola haciendo consulta directamente a la base de datos mysql. me muestra conexion correcta avisandome que me estoy conectando a la DB me tira el Warning y me dice que Usuario no existe por que creo que estoy enviando mal los datos de recuperacion. es ahi donde tengo el problema en el mysql_fech_Array()
obtenerDatosDB.
  #6 (permalink)  
Antiguo 02/01/2008, 22:42
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Re: Validar un usuario

Ahora

Código PHP:
public function obtenerdatosBD(){
//aquí se obtienen los datos de la consulta
$this->consulta mysql_fetch_array($this->consulta);
return 
$this->resultado;

Despues...

Código PHP:
public function obtenerdatosBD(){
//aquí se obtienen los datos de la consulta
$this->resultado mysql_fetch_array($this->consulta);
return 
$this->resultado;

  #7 (permalink)  
Antiguo 05/01/2008, 09:17
 
Fecha de Ingreso: diciembre-2007
Mensajes: 12
Antigüedad: 16 años, 4 meses
Puntos: 0
De acuerdo Re: Validar un usuario

Gracias Bulter te pasaste ahora me funcionó ese era mi problema no me había dado cuenta de esa variable. bye.
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




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