Ver Mensaje Individual
  #30 (permalink)  
Antiguo 30/04/2016, 12:51
Avatar de kip13
kip13
 
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Quizas no te acepta mysqli porque estas usando solo en esa linea mysqli y en las demas inluyendo talvez la configuracion del acceso a la base no la usas, mysql se la considera obsoleta, es preferible usar mysqli, solo debes modificar las lineas de codigo a mysqli y claro leer algo el manual de cada funcion mysqli que vayas a reemplazar, por ejemplo:

Este seria un ejemplo sencillo de mysql:

Código PHP:
<?php
// Conexión
$enlace mysql_connect('anfitrión_mysql''usuario_mysql''contraseña_mysql')
    OR die(
mysql_error());

// Consulta
$consulta sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            
mysql_real_escape_string($usuario),
            
mysql_real_escape_string($contraseña));
?>
Este es un uso comun de mysqli:

Código PHP:
<?php
$enlace 
mysqli_connect("localhost""mi_usuario""mi_contraseña""world");

/* verificar la conexión */
if (mysqli_connect_errno()) {
    
printf("Falló la conexión: %s\n"mysqli_connect_error());
    exit();
}

mysqli_query($enlace"CREATE TEMPORARY TABLE miCiudad LIKE City");

$ciudad "'s Hertogenbosch";

/* esta consulta fallará debido a que no escapa $ciudad */
if (!mysqli_query($enlace"INSERT into miCiudad (Name) VALUES ('$ciudad')")) {
    
printf("Error: %s\n"mysqli_sqlstate($enlace));
}

$ciudad mysqli_real_escape_string($enlace$ciudad);

/* esta consulta con $ciudad escapada funcionará */
if (mysqli_query($enlace"INSERT into miCiudad (Name) VALUES ('$ciudad')")) {
    
printf("%d fila insertada.\n"mysqli_affected_rows($enlace));
}

mysqli_close($enlace);
?>
Aclaro, solo son ejemplos que encontre en la web, en el manual de referencia especificamente, puedes fijarte en las funciones mysqli y reemplazarlas en tu codigo, tratando de llevar la sintaxis correcta al ejemplo.

Con respecto si afecta o no aquella linea que te postee, pues si afecta porque esos son los datos que usa el usuario para inicar sesion o no? es decir, los que envia el form para buscar en la base, y tienes razon tambien es para poder filtrar cualquier caracter que pueda afectar al comportamiento de tu base de datos, especificamente:

Cita:
Lo conocido como inyección de código o inyección SQL no es otra cosa que una técnica mediante la cual un intruso utiliza las vulnerabilidades de las sentencias MySQL para propósitos distintos a los previstos en la aplicación.

Para evitar la posibilidad de ese efecto indeseado (inyección de código) PHP dispone de la función:

mysql_real_escape_string(cadena)
que hace una llamada a la librería MySQL del mismo nombre y para que «escape» los caracteres especiales contenidos en la cadena de forma que sea mucho más seguro su uso a través de mysql_query(). Los caracteres que son «escapados» son los siguientes: \x00, \n, \r, \, ', " y \x1a. Se convertirían en: \\x00, \\n, \\r, \\\, \', \" y \\x1a con lo cual la cadena ' or '34=34 se convertiría en \' or \'34=34 y la claúsula anteriormente comentada se convertiría en WHERE (Nombre='\' or \'34=34') con lo cual ya no se produciría el efecto indeseado y se evitaría el riesgo de uso inadecuado.
Si estas intentando crear un inicio de sesion, esa funcion es lo mas conveniente.

Puedes postear el codigo que tienes ya configurando a mysqli?

Espero aquello te haya despejado alguna duda. Luego de colocar la funcion me gustaria que nos digas exactamente cual es el comportamiento o el error que tienes al probar el inicio de sesion, puedes echarle un ojo a PHP ERROR LOG en el servidor local que estas utilizando.

Saludos.

Última edición por kip13; 30/04/2016 a las 13:08