Foros del Web » Programando para Internet » PHP »

Sistema de cambio de Password

Estas en el tema de Sistema de cambio de Password en el foro de PHP en Foros del Web. El código que tengo es este: <font face="Tahoma" size="2"> <?php if (!$usuario) { echo "<center>Debes introducir tu nombre de usuario</center>"; exit; } include("conexion.php"); $link=Conectarse(); $result=mysql_query("select ...
  #1 (permalink)  
Antiguo 05/09/2002, 07:33
 
Fecha de Ingreso: abril-2002
Mensajes: 16
Antigüedad: 22 años
Puntos: 0
Sistema de cambio de Password

El código que tengo es este:

<font face="Tahoma" size="2">
<?php
if (!$usuario) {
echo "<center>Debes introducir tu nombre de usuario</center>";
exit;
}
include("conexion.php");
$link=Conectarse();
$result=mysql_query("select * from gente WHERE usuario='$usuario' passw='$passw'",$link);
$row = mysql_fetch_array($result);
$total_consulta_registros=mysql_num_rows($result);
if ($total_consulta_registros==0){
echo "Comprueba que los datos son correctos.";
echo "<br><a href=javascript:history.back()>Atrás</a>";
exit;
}
else {
$id = $row["id"];
$result=mysql_query("UPDATE gente SET passw='$newpassw' WHERE id='$id'",$link);
echo "La contraseña ha sido cambiada.";
mysql_free_result($result);
mysql_close($link);
}
?>


Pero me da el siguiente error:


Warning: Supplied argument is not a valid MySQL result resource in /homepages/25/d35631571/htdocs/buscopareja/usuarios/passwcambiada.php on line 10

Warning: Supplied argument is not a valid MySQL result resource in /homepages/25/d35631571/htdocs/buscopareja/usuarios/passwcambiada.php on line 11

Comprueba que los datos son correctos.
Atrás

:(

Si alguien me echa un cable agradecería
  #2 (permalink)  
Antiguo 05/09/2002, 10:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: Sistema de cambio de Password

El problema te lo da el:
$row = mysql_fetch_array($result);

El cual .. ademas q no lo usas para nada :cantar: .. si ocasiona una consulta con registros 0 (cero) a mostrar tira esos errores.

Solución:
Quita esa linea simplemente ...

Un saludo,
  #3 (permalink)  
Antiguo 05/09/2002, 10:35
 
Fecha de Ingreso: abril-2002
Mensajes: 16
Antigüedad: 22 años
Puntos: 0
Re: Sistema de cambio de Password

Cluster, creo q necesito el $row ese
para el posterior result... ya que necesito que me sake la id de arriba...

$row = mysql_fetch_array($result);
$id = $row["id"];
$result=mysql_query("UPDATE gente SET passw='$newpassw' WHERE id='$id'",$link);
  #4 (permalink)  
Antiguo 05/09/2002, 10:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: Sistema de cambio de Password

Ok, no me habia percatado de eso .. en tal caso tendrias q hacer:

<font face="Tahoma" size="2">
<?php
if (!$usuario) {
echo "<center>Debes introducir tu nombre de usuario</center>";
exit;
}
include("conexion.php");
$link=Conectarse();
$result=mysql_query("select * from gente WHERE usuario='$usuario' passw='$passw'",$link);

$total_consulta_registros=mysql_num_rows($result);
if ($total_consulta_registros==0){
echo "Comprueba que los datos son correctos.";
echo "<br><a href=javascript:history.back()>Atrás</a>";
exit;
}
else {
$row = mysql_fetch_array($result);
$id = $row["id"];
$result=mysql_query("UPDATE gente SET passw='$newpassw' WHERE id='$id'",$link);
echo "La contraseña ha sido cambiada.";
mysql_free_result($result);
mysql_close($link);
}
?>

De todas formas . si es para un registro solo yo haria lo siguiente (en vez del mysql_fech_array):

(en la posicion q actualemten esta el mysql_fech ...)

$id=mysql_result($result,0,'id');

Para obtener un solo resultado concreto (registros -> campo) es mas optimo usar el mysql_result q no un mysql_fecht_xxx a no ser q tu resultado de la consulta pueda arrojar varios registros.

Un saludo,

  #5 (permalink)  
Antiguo 05/09/2002, 14:41
 
Fecha de Ingreso: abril-2002
Mensajes: 16
Antigüedad: 22 años
Puntos: 0
Re: Sistema de cambio de Password

Cluster, sigue sin tirar...

<font face="Tahoma" size="2">
<?php
if (!$usuario) {
echo "<center>Debes introducir tu nombre de usuario</center>";
exit;
}
include("conex.php");
$link=Conectarse();
$result=mysql_query("select * from gente WHERE usuario='$usuario' passw='$passw'",$link);
$total_consulta_registros=mysql_num_rows($result);
if ($total_consulta_registros==0){
echo "Comprueba que los datos son correctos.";
echo "<br><a href=javascript:history.back()>Atrás</a>";
exit;
}
else {
$id=mysql_result($result,0,'id');
$resultado=mysql_query("UPDATE gente SET passw='$newpassw' WHERE id='$id'",$link);
echo "La contraseña ha sido cambiada.";
mysql_free_result($result);
mysql_close($link);
}
?>


Eso tampoco va... da el siguiente error:

Warning: Supplied argument is not a valid MySQL result resource in /homepages/25/d35631571/htdocs/buscopareja/usuarios/passwcambiada.php on line 11
Comprueba que los datos son correctos.
Atrás


:(
  #6 (permalink)  
Antiguo 05/09/2002, 20:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: Sistema de cambio de Password

Mikel .. q te reponda yo o intenete ayudarte no me obliga a nada ...

Llegado este punto me pasan dos cosas:
1) que ya no se que hacer o no se que pude pasar.
2) me aburro del tema ..

Por lo tanto .. pide ayuda en general y sigue insistiendo en este mensaje ...

Un saludo, lo sienteo :(
  #7 (permalink)  
Antiguo 06/09/2002, 02:14
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Re: Sistema de cambio de Password

Hola

Mikel, si te tomas la molestia de entender el mensaje de error que te da PHP, podrias encontrar tu solo la solucion (o al menos el error).

El mensaje te viene a decir "El argumento (parametro) facilitado no es un recurso de resultado MySQL valido en la linea 11". Tu linea 11 es:

Código:
$total_consulta_registros=mysql_num_rows($result);
El unico parametro en esta linea es $result, y si lees el manual el parametro de mysql_num_rows() tiene que ser un "recurso de resultado MySQL valido" (no me se el texto de memoria.

Tras analizar esto llegamos a la conclusion de que el valor de $result es erroneo. Ahora tenemos que averiguar por que tiene un valor erroneo. $result es una variable. Si tiene un valor erroneo es porque en la ultima sentencia donde se le asigno un valor, ese valor era erroneo. En tu codigo, la sentencia en la que se asigna el valor a $result es:
Código:
$result=mysql_query("select * from gente WHERE usuario='$usuario' passw='$passw'",$link);
de lo que deducimos que es mysql_query() la que devuelve el valor erroneo, es decir, mysql_query() no se ejecuta correctamente.

¿Por que? Con los datos de los que dispongo no te lo puedo decir y las posibles causas son muchas. Pero si te puedo decir lo que debes hacer ( y tendrias que haber hecho desde el principio) para que sea el propio PHP (con ayuda de MySQL) el que te diga porque falla mysql_query().

Simplemente tienes que comprobar si el valor devuelto por mysql_query() es valido y en caso contrario, pedirle a PHP que pregunte a MySQL que es lo que ha salido mal. Asi de facil :)

Como estoy de buen humor y descansado despues de las vacaciones, voy a ser bueno y darte el codigo. Inserta estas lineas despues de la de mysql_query():
Código:
if (!$result){
  echo "Error en la consulta. MySQL dice : ".mysql_error();
  exit;
}
Esto hara que si falla el mysql_query() veras en pantalla un mesaje que te dira por que ha fallado MySQL.

Sigo >>

Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 06/09/2002, 02:45
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Re: Sistema de cambio de Password

Continuo >>

Otra cosa es que ese mensaje signifique algo para ti, pero tendras algo mas concreto para seguir preguntando por aqui.

Una vez finalizada mi explicacion, ahora le toca el turno a mi charla filosofica, dedicada a todos los que comienzan con PHP y la programacion. Y te aconsejaria que la leyeses. Y espero que no te sientas molesto o aludido o lo que sea por mi forma de expresarme, es que yo soy asi.

El problema que tiene mucha gente que empieza en esto es que no sabe programar. A esto se le añade el hecho de que suelen ser autodidactas y aprenden leyendo tutoriales de diversa calidad, haciendo pruebas consultando en alguna rara ocasion el manual y sobre todo haciendo preguntas en foros como este.
Analicemos el problema. Muchos pueden pensar que programar es solo saberse de memoria todas las funciones de un lenguaje, en este caso PHP. Programar es mucho mas. Tienes que:

1.- Conocer el lenguaje: sus caracteristicas, como se comporta en cada momento, las herramientas que tiene para facilitarte la depuracion, entender y saber usar su manual, ...
2.- Conocer y usar tecnicas y "buenas maneras" de programar.
3.- Saber analizar el problema y estructurarlo en el programa.

Son cosas mas complejas de lo que padecen, y se tarda mucho tiempo (años) en dominar un lenguaje.

Si lo unico que quieres hacer con PHP es meter un poco de codigo aqui, una consulta de BD alla, quizas lo que mas te convenga sea que simplemente uses scripts ya hechos(de calidad) y aprendas a adaptarlos a tus necesidades. Tampoco es sencillo, pero con la cantidad de scripts que ahi en el mercado, es mas facil y rapido encontrar uno que haga lo que quieres y que hacerlo tu mismo desde cero. Realmente esto es lo que hacen la mayoria de gente que quiere usar PHP en sus paginas, aunque no lo sepan.

Si lo que realmente quieres es aprender a programar en PHP, yo te aconsejaria que primero aprendieras a programar y luego PHP.

Ssiguiente mensaje: el auto-aprendizaje

Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 06/09/2002, 03:18
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Re: Sistema de cambio de Password

El problema del auto-aprendizaje es que la gente no lo sabe hacer bien. Se creen que leyendo un tutorial y copiando su codigo ya tienen un script de calidad y a prueba de fallos. Nada mas lejos de la realidad. En los tutoriales serios con codigo normalmente te dicen si el codigo es apto para fase de producion o simplemente es un ejemplo al que le queda mucho para madurar.

Un tutorial es sobre un tema especifico, quiere explicar una cosa en concreto a la que da mayor importancia. El codigo esta centrado en ese concepto y descuida algunas buenas maneras de programar. Sobre todo, se suele omitir el codigo que sirve para validar que los valores devueltos por las funciones son validos. Ese tipo de codigo es tedioso, repetitivo y en algunos casos el numero de lineas de codigo usadas para validar es superior a las lineas de codigo de lo que va el tema. Ademas, todo el mundo sabe que tiene que hacer ese tipo de codigo .

Bueno, esto se esta haciendo demasiado largo y no muy util, asi que lo dejo aqui. Estoy pensando que quizas es un buen tema para hacer un articulo/tutorial. Quizas con un poco de suerte me decida a escribirlo yo mismo, no se.



Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 06/09/2002, 08:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: Sistema de cambio de Password

Josemi ...

Muy buena tu charla sobre Programacion ...

Solo una recomendacion .. No metas a todo el mundo en el mismo saco.

Se te olvidó dar la solucion al problema de "autodidacta" .. Tal vez decir algo sobre autodisciplina y .. bueno lo que decias de empezar por la Base .. Y .. tal vez ira a la Universidad? no se .. ahi eso es lo q no me quedo claro.

Yo soy Autodidacta. Programacion en su epoca di via profesor (clases en una rudimentaria academia) algunos conceptos basicos de programacion. PHP sin embargo he aprendido 100% autodidacta ..

Tampoco es plan de hacer un concurso/examen para ver q saben o q no saben los que han ido alguna Universidad aprender programacion y los que son autodicataas y le ponen empeño en aprender.

Yo creo q todo esta en las ganas de aprender de cada uno (por lo menos para los Autodicactas como yo). A mi no me asusta leerme un libro/articulo o documentacion plenamente teorioca sobre algun tema .. casa que creo q el autodidacta "clasico" solo busca "codigo, codigo .." como parace ser.

Luego tienes foros, chats y amigos en general que te pueden orientar y decirte cosas como lo que has comentado .. ejemplo: empezar por la base .. tener claro conceptos .. etc. Y el que quiera aprender de verdad ya preguntará en el foro programacion donde poder informarse sobre esos conceptos basicos.

Bueno .. ese es mi punto de vista .. si te animas hacer un articulo seria bueno ..

Un saludo,
  #11 (permalink)  
Antiguo 10/09/2002, 03:51
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Re: Sistema de cambio de Password

Cluster, no era mi intencion meter a todos los autodidactas en el mismo saco, es mas, siento un gran respeto por los autodidactas, ya que creo que tienen una gran fuerza de voluntad y una gran autodisciplina (cosas de las que yo carezco).

Mi critica iba dirigida sobre todo a esos tipicos casos de "No tengo ni idea de programacion y estoy empezando con PHP (he acabado de instalarlo hace 3 minutos). Quiero que me ayuden a hacer un Sistema de Noticias/Foros/Sitema de seguimiento de Satelites espias. Gracias" o el de "He escrito este codigo y me da fallo. Paso de leer el mensaje de error que me da PHP y menos intentar aprender como localizar yo mismo los fallos de codigo.". Creo que conoces estos y otros muchos. ¿Como vas ha programar un sitema de noticias si ni siquiera sabes como diseñarlo? ¿Como vas a crear scripts de mediana complejidad si no sabes depurar los errores sencillos?

Siento el malentendido. Es debido a que lo escribi todo en caliente y sin revisarlo. Tengo que procurar cuando escriba este tipo de mensajes, escribirlo primero en el notepad, estructurarlo bien y releerlo bien 500 veces para estar seguro que dice lo que quiero decir.

Un saludo,




Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 10/09/2002, 10:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: Sistema de cambio de Password

Estoy deacuerdo con este ultimo punto xD ...

Pero ya sabes .. en esta vida hay de todo .. y siempre que otro le vaya solucionando ese tipo de problemas mas todavia y con razon NO tendran ganas de aprender y resolverse esos problemas porque tal vez piensan: "en los foros .. o fulanito" me sacar el error de "Parser: .." o el que toque ...

Mi filosofia de ayudar en los foros/chats y cualquier otro medio es:

- No dar la solución (código normalmente) sin tan siquiera explicarlo. Ahí alguno lo leerá y aprenderá otro tomará el código y le resolverá el problema puntual .. y unos dias despues vendrá con otro problema similar.

- Dar sermones sobre que tienen que aprender cuando veo practicas como las q mencionabas .. Eso en alguna ocasion solo me proporciona que alguna q otra .. pero lo que decia .. si NO se da un toque de atención siempre estaremos en las mismas.

- Ahh . y otra mas .. Bueno tanto en foros como chats .. NO resolver dudas en privado (en foros mucha gente me contacta via mail refiriendose a una pregunta del foro ..) en chats .. los privados. Siempre prefiero responder publicamente a las inquitudes de quien pregunta (claro está .. si lo sé) así aprendemos todos y colaboramos todos ... Que por lo menos en los foros se está tomando la constumbre de que si uno interactua en un pos + de 3 veces ya no hay nadie que aporte sobre el tema y parece q "estes obligado" a seguir en el .. cuando a todo el mundo llega un punto que o no sabe por donde tirar o simplemente se cansa del mismo (lo digo por mi, ejemplo .. este post inicial).


Un saludo,
  #13 (permalink)  
Antiguo 10/09/2002, 10:50
Avatar de Jano.cl  
Fecha de Ingreso: diciembre-2001
Ubicación: Chile
Mensajes: 258
Antigüedad: 22 años, 4 meses
Puntos: 0
Re: Sistema de cambio de Password

que lateros
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 12:03.