¿Cómo se supone que debo hacerlo? Si vengo a preguntar aquí es porque he seguido varios tutoriales tanto en español como en inglés y ninguno me ha funcionado :\
yo lo hice pensando por mi cuenta xD, pero este -> http://www.desarrolloweb.com/manuales/37/ te sirve seguro, porque lo lei por encima despues de hacer mi sistema para comprobar si la habia cagado o lo podía hacer más seguro
#2 ya bueno, es que yo no sé php xdddddddddddd.
voy a probar con eso a ver que tal xd, muchas gracias.
pues en esa web que te he puesto tienes muchisimos manuales/tutos de php,sql, asp, html, css, js/ajax...
De todas formas acuerdate de encriptar las contraseñas de las bbdd aunque sea con un simple md5 xD
como ya te ha puesto #2 ahi tienes lo basico para hacerte un sistema de login. Ya luego lo puedes complicar/mejorar todo lo que quieras.
De todas formas lo mas basico es:
/// login ///
session_start():
$sql = mysql_query ("select * from usuarios where nombre like ' ".$nombre." ' and pass like ' ".$pass." ' ");
$esta = mysql_num_rows($sql);
if($esta){
$_SESSION['estado'] = "logueado";
}else{
echo "usuario o contraseña no validos";
}
despues de eso solo tendrias que comprobar que este logueado, comprobando que existe la variable de sesion "estado" y que el valor es "logueado"
/// queremos_que_logueado.php ///
session_start();
if(!empty($SESSION['estado']) && ($SESSION['estado'] == "logueado")){
echo "estas logueado";
}else{
echo "logueate";
}
#5 un pequeño inciso, yo no pondría un 'like', si no un '=', ya que el usuario y el password, o és, o no és....
joder, el tutorial ese de php que me has dado, blzkz es lo más chano del mundo. no permite registro y básicamente lo que hace es permitir el login de UN usuario.
El concepto que tienes que tener claro es:
- Introduces usuario y su contraseña.
- Buscas que el usuario exista en la bd.
3.1. Si existe -> comparas la contraseña que ha escrito con la asociada a dicho usuario.
3.2. Si no existe -> error de datos.
4.1. Si las contraseñas son iguales -> se loguea (creas variable session)
4.2. Si son distintas -> error de datos.
Olvídate de momento de encriptar la contraseña, ya tendrás tiempo de eso.
Suerte!
Si tengo claro cómo tiene que ir, el caso es que yo no puedo hacerlo por mi cuenta. Quiero decir, yo no puedo escribir el código porque NO SÉ php.
Voy a ser más concreto:
Todo esto va para el proyecto final de mi ciclo de grado medio (esi), para el cual necesito entregar una página web con base de datos integrada.
mi página en concreto es una tienda de guitarras; y el problema es que no soy ni capaz de hacer el login, ¿por qué?
porque nos han enseñado html, css y mysql, pero de php no nos han enseñado nada más que a hacer un triste echo.
entonces, básicamente lo que necesito es aprender a integrar cualquier script de por ahí y meterlo, pero todos me dan fallo y por mucho que los modifico investigando y tal no consigo hacer funcionar NADA.
pd. en caso de que no consiga nada para el día de entrega no pasa nada porque nos quejaremos y tal, ya que no nos pueden pedir algo que no nos han dado y blablabla, pero antes de investigar como liarla y eso me gsutaría intentar aprender por mi cuenta o algo como hacerlo :\
#9 eres de mi instituto? xDD
Para que te hagas una idea, a nosotros de php lo que nos enseñaron fue:
ademas de eso, nos enseñaron como se hace un while y que los checkbox tienen "2 estados"
"1 y 0"
Usabamos una version mas antigua de wamp porque con la nueva version, para saber si un checkbox estaba pulsado habia que hacer esto:
if(isset($checkbox))
mientras que antes teniamos que hacer esto:
if($checkbox == 1)
No, no nos enseñaron que en php existian los includes, las funciones, que las conexiones habian que cerrarlas y demas cosas basicas xD
Y eso fue todo lo que me enseñaron de php
Con eso te puedes hacer una idea del nivel xDD
A raiz de ahi, todo es mirar por tu cuenta, yo por lo pronto, ya he hecho varias cosas (el proyecto mio), sobre todo en las practicas, que van desde un simple instalador en php, hasta wrappers o juegos completamente en php.
El proyecto mio es una web para una inmobiliaria, muchas consultas, un sistema de login y un panel de administracion para poder dar de alta propiedades, clientes, usuarios, zonas (pais y ciudad) y una pequeña gestion de bd (importar y exportar).
Si yo he aprendido a hacer esas cosas, cualquiera puede xD
#6 cierto, se me fue la cabeza xD
Un ultimo apunte #1, ya que tienes conocimientos mas o menos amplios de css + mysql + html, empieza a buscar por... aqui[illasaron.com], por aqui[desarrolloweb.com] o aqui[forosdelweb.com].
Te aconsejo que te hagas muy amigo del manual de php y que busques info sobre todo en ingles (ya que normalmente hay bastante mas que en español)
por cierto LR si usas las dobles comillas para "crear" una cadena, dentro puedes usar directamente las variables. Lo digo por tu sentencia en el query a la bbdd que cuando haces value='".$variable."' puedes poner value='$variable' y debería funcionar. Es la característica que diferencia las " de las ' , ademas de que las dobles son mas lentas de renderizar.
siempre se aprende algo nuevo #12
Sabia que funcionaban sin tener que poner las comillas, pero no sabia si era correcto o no.
Entonces... esto funcionaria?
$sql = mysql_query("select * from usuarios where usuario = '.strtoupper($variable).' and pass = '$pass');
Con la llamada a la funcion (strtoupper) no se si funciona pero cuando pones directamente lo que has puesto en la 2 condicion del where (pass = '$pass') si que funciona. Para comprobarlo guarda la cadena de la consulta en una varible y haz un echo de la variable, si la consulta te sale bien funcionara xD
en 3 meses aprendí CSS3 y en 4 meses php+mysql : Si yo en 7 meses soy capaz de hacer una web con panel de control multiusuario con tipos de cuenta y x asi decir una inmobiliaria con todo lo que conlleva , cualquiera puede !
#12 pero metiendo una variable dentro de una cadena el tiempo de ejecución aumenta mogollón.
es decir :
echo " me llamo $usuario";
es mucho más lento que
echo "me llamo ".$usuario;
#15 Y si con 10 meses de experiencias te vienes aires de superioridad y prepotencia, me gustaría que publicases la url de esa web, para ver lo que iba a durar si un mr. bean en la portada (y seguro que no a través de xss)
#16 Puesto a optimizar tu solución también esta mal (de hecho creo que tardaría lo mismo), lo más rápido sería:
echo 'me llamo '.$usuario;
#18 +1
La única razón para usar comillas dobles es la de meter variables, porque son mas lentas que las simples de ahi que dijera que si usaba dobles metiera las variables dentro
No encuentro ahora el documento que escribio uno de los de zend donde explicaba que lo de las comillas simples y dobles desde PHP5 ya no existe (en realidad si que existe, pero la diferencia era mínima), pero que el auténtico problema era gastar una variable dentro de la cadena por el tema de conversión de tipos. Sigo buscando.
Como no lo encontraba he hecho un pequeño benchmark yo mismo:
$time = microtime(true);
for($i = 0; $i < 100000; $i++){
echo 'hola esto es una variable: '.$i;
}
$time1 = microtime(true) - $time;
$time = microtime(true);
for($i = 0; $i < 100000; $i++){
echo "hola esto es una variable: ".$i;
}
$time2 = microtime(true) - $time;
$time = microtime(true);
for($i = 0; $i < 100000; $i++){
echo "hola esto es una variable: $i";
}
$time3 = microtime(true) - $time;
echo "<br /><br /><br /><br />
/* Y el tiempo es de:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /<br /><br />
<strong>Comilla simple con variable concatenada: </strong>".$time1." <br /><br />
<strong>Comilla doble con variable concatenada: </strong>".$time2." <br /><br />
<strong>Comilla doble con variable dentro : </strong>".$time3." <br /><br />
<small>
<strong>Versión PHP:</strong> 5.2.6-1+lenny3
</small>
";
los resultados medios son estos:
/* Y el tiempo es de: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
Comilla simple con variable concatenada: 2.18828988075
Comilla doble con variable concatenada: 2.80092000961
Comilla doble con variable dentro : 3.19795203209
Versión PHP: 5.2.6-1+lenny3
Se aprecia una diferencia aunque tampoco excesiva.
Comilla simple con variable concatenada: 2.18828988075
Comilla doble con variable concatenada: 2.80092000961
Comilla doble con variable dentro : 3.19795203209
Con eso se demuestra que hay menos perdida de comillas dobles con variable dentro con respecto a variable concatenada a usar compuestas con concatenada a simple.
Asi que usar comillas dobles para no usar variables dentro es una perdida de recursos sin sentido, y llegamos al punto de que o usas las dobles para lo que dije o no las usas xD
PD: en #20 estabas muy lejos de lo que te has demostrado a ti mismo en #21
#22 ya bueno, también se demuestra que se pierde rendimiento al meter la variable dentro de las comillas que al ponerla fuera
sí, #18 decía que creía que tardaría lo mismo .
Pero siiiiiii, parece que se nota más la diferencia entre comillas simples y dobles, pese a todo xD