Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Duda con código.

Estas en el tema de Duda con código. en el foro de PHP en Foros del Web. Estoy usando dreamweaver para hacer un acceso a una web, un Login vamos. Y introduce automaticamente el siguiente codigo. Código PHP:      if (! function_exists ( ...
  #1 (permalink)  
Antiguo 23/05/2013, 02:24
 
Fecha de Ingreso: noviembre-2011
Mensajes: 102
Antigüedad: 12 años, 5 meses
Puntos: 0
Duda con código.

Estoy usando dreamweaver para hacer un acceso a una web, un Login vamos.

Y introduce automaticamente el siguiente codigo.

Código PHP:
    if (!function_exists("GetSQLValueString")) {
        function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue "") {
            if (
PHP_VERSION 6) {
                
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
            }
            
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

            switch (
$theType) {
                case 
"text":
                    
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
                    break;    
                case 
"long":
                case 
"int":
                    
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
                    break;
                case 
"double":
                    
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
                    break;
                case 
"date":
                    
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
                    break;
                case 
"defined":
                    
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
                    break;
            }
            
            return 
$theValue;
        }
    } 
Para usarlo posteriormente aqui

Código PHP:
$LoginRS__query=sprintf("SELECT idUsuario, strEmail, strPassword FROM tblusuario WHERE strEmail=%s AND strPassword=%s",
            
GetSQLValueString($loginUsername"text"), GetSQLValueString($password"text")); 
La pregunta es, como se podria dejar la sentencia de SQL para no tener que usar esa funcion?:S
  #2 (permalink)  
Antiguo 23/05/2013, 04:21
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: Duda con código.

Sencillo, utiliza mysqli o PDO y sus prepared statements para no tener que utilizar funciones de filtrado tan asquerosas como estas.

Si no quieres, con sustituirla por mysql_real_escape_string, sería suficiente.

Saludos

PD: Lo de asquerosas es apreciación personal.
  #3 (permalink)  
Antiguo 23/05/2013, 04:46
 
Fecha de Ingreso: noviembre-2011
Mensajes: 102
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Duda con código.

He dejado de hacerlo con Dreamweaver, me estaba poniendo demasiado codigo ya autogenerado.

He decidido hacerlo a mano, pero, me encuentro con el problema siguiente..

Este codigo me da error y no entiendo el por que

Código PHP:
$varProducto_DatosProducto "0";
        
        if(isset(
$_GET["recordID"])){
            
$varProducto_DatosProducto $_GET["recordID"];
        }
        
        
mysql_select_db($database_conexiontienda1$conexiontienda1);
        
        
$query_DatosProducto printf("SELECT * FROM tblproducto WHERE tblproducto.idProducto='".$varProducto_DatosProducto."'");
        
        
        
$DatosProducto mysql_query($query_DatosProducto$conexiontienda1) or die(mysql_error());
        
$row_DatosProducto mysql_fetch_assoc($DatosProducto);
        
$totalRows_DatosProducto mysql_num_rows($DatosProducto); 
Se que estoy usando el antiguo acceso a bbdd de php, pero no se usar el nuevo y no me da tiempo tampoco.

El error que me da es este.

SELECT * FROM tblproducto WHERE tblproducto.idProducto='1'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '58' at line 1

Pero no comprendo por que, si me coge bien el ID en la consulta.
  #4 (permalink)  
Antiguo 23/05/2013, 05:06
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: Duda con código.

Te cuidado al utilizar printf(), pues ésta devuelve un ENTERO que es la longitud de la cadena. Quizá no es lo que le quieres pasar a mysql_query, ¿verdad?

Quizá quieras utilizar sprintf().

Saludos.

PD: Sobre lo de mysql, el paso a mysqli de manera procedurar es prácticamente trivial en tu caso, pero bueno, allá tú.
  #5 (permalink)  
Antiguo 23/05/2013, 08:45
 
Fecha de Ingreso: marzo-2013
Mensajes: 51
Antigüedad: 11 años, 1 mes
Puntos: 2
Respuesta: Duda con código.

Yo te dejo un login un poco chapucero y sencillo que tengo implementado en una aplicacion, por si te orienta o te sirve de algo. Esta mi base de datos y mi consulta, etc...

Código PHP:
<?php

    
//Establecer la conexion
    
$c mysql_connect('localhost','root','');
    
    
//Seleccionar la base de datos
    
mysql_select_db("proyecto",$c);
    
    
//Recoger los valores del formulario
    
$v1 $_POST['usuario'];
    
$v2 $_POST['password'];
    
    
//Comprobar si el usuario y la contraseña coinciden
    
$cons "SELECT * FROM usuarios WHERE usuario = '$v1' AND password = '$v2';";
    
$res mysql_query($cons,$c);
    if(!(@
mysql_result($res,0))){
        
header('location: ../html/index.php'); //Si el usuario y la contraseña no coinciden, te deja en index.html
    
}else{
        
session_start();
        
$_SESSION['usuario'] = $v1;
        
header('location: ../html/acciones.php'); //Si el usuario y la contraseña coinciden, te manda a acciones.html
    
}
    
    
//Comprobar si el usuario es administrador
    
if(($v1 == "admin") && ($v2 == "admin")){
        
header('location: ../html/admin.php');
    }

?>
  #6 (permalink)  
Antiguo 24/05/2013, 08:13
 
Fecha de Ingreso: noviembre-2011
Mensajes: 102
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Duda con código.

Gracias a los 2 por la ayuda. Ya esta solucionado

En cuanto a lo de MySQL, voy a cambiarlo todo a MySQLi

Etiquetas: mysql, select, sql
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 04:24.