Foros del Web » Programando para Internet » ASP Clásico »

Cookies

Estas en el tema de Cookies en el foro de ASP Clásico en Foros del Web. Hola, necesito una sugerencia o recomendación porque no sé muy bien como plantearme esto, ni si será muy dificil en ASP, me explico: Después de ...
  #1 (permalink)  
Antiguo 16/04/2007, 08:05
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 18 años, 1 mes
Puntos: 0
Cookies

Hola, necesito una sugerencia o recomendación porque no sé muy bien como plantearme esto, ni si será muy dificil en ASP, me explico:

Después de tener un login y un alta de usuario, tengo que hacer la modificación por si quieren cambiar la contraseña.
Es ahora cuando me planteo como hacerlo, lo que había pensado era que el login cuando loguea a alguien le manda a index de esta manera (NOTA: index me dá igual que sea htm que asp) location.href="index.htm"
Lo que he hecho ha sido poner en index.htm un botón de modificación, para que cuando el usuario quiera pulse y cambie su contraseña (es lo único que tenemos para cambiar de momento)

A mí lo que me parece que se debiera hacer y que quedaría mejor sería que cuando le demos a modificar, el id de la persona que está logueada esté en el index y que al darle a modificar se mande el id, para cuando queramos hacer el update el usuario no tenga que volver a poner su id. No sé si me explico bien.

Lo que no sé es si con un href como tengo ahí puesto podría pasarle también variables, cómo ya he dicho no me importa que la página sea htm, de hecho será asp algún día, asique realmente me vendrían mejor soluciones así, lo de htm era más para probar si todo funcionaba.

Me gustaría tener vuestras opiniones sobre cómo hacerlo, gracias.

EDITO: Lo he ido haciendo como yo pensaba y parece que va bien, ahora intentaré pasar la variable user_id del login hasta que puedas modificar, es decir:

Login -> Comprobación -> index (con la opción modificar) -> Pulsamos modificar -> Modificación (para meter la contraseña nueva) -> Hacemos un update con la nueva contraseña que ha introducido el usuario.

De esta manera no tengo que pedirle otra vez la id del login al usuario, sólo tendría que pasarla de una página a otra, pero si cuando llamo a index tengo esto:

If usuario existe then (esto no es sintaxis sólo es para no volveros locos pegando todo el código)
location.href="index.asp"
Endif

Podria pasar una variable así? quizás por url?
Si os parece que mi método no es el más correcto también estoy abierta a sugerencias, que esto es algo que se me ha ocurrido sobre la marcha.

Última edición por Shilfild; 17/04/2007 a las 04:59 Razón: Ha cambiado de título
  #2 (permalink)  
Antiguo 16/04/2007, 10:05
Avatar de allhen  
Fecha de Ingreso: septiembre-2005
Mensajes: 243
Antigüedad: 19 años, 7 meses
Puntos: 1
De acuerdo Re: Sugerencia ~ Modificación

Pues crea cookies...

despues.. q validas.. q el usuario existe.. y q la contraseña es correcta y ha sido dado de alta generas una cookie con el id_usuario. !!

luego en index.asp en tu boton de modificacion Options.asp?user_ID=recoge-la-cookie&typeDoc=change-pass

o si no simplemente. al pulsa el boton de modificacion Options.asp recoges la cookie.. y cargas los datos !!
__________________
En esta vida todo es posible ... excepto vencer a la muerte .
  #3 (permalink)  
Antiguo 17/04/2007, 02:17
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Sugerencia ~ Modificación

He sacado esto de otro post, pero resulta que tenía el título de Urgente x_x asique no lo he puesto up. Por cierto, ahora que lo pienso, creo que era de Shiryu_Libra, pero lo he intantado volver a buscar y no lo veo sorry.
La cosa es que no lo entiendo muy bien...

Yo esta parte de aquí la debiera de tener cuando ya sepa que existe el usuario. La sintaxis que yo pondré será en verde, porque igual la tengo mal.
En azul, las explicaciones del otro post.

response.cookie("temp")("nom")="el nombre"
response.cookie("temp")("nom")="id_user"


lo mandas llamar cuando lo ocupas....
al verificar con la base tomas el nombre del temporal



temporal=request.cookie("temp")("nom")
temporal=request.cookie("temp")("nom")


if RS("usuario")=temporal then <-- Esto no lo entiendo, el por qué necesitamos un recordset, quizás porque en otros casos sea porque puede devolver varios resultados, pero en el mio sólo me va a dar una user_id

sigues haciendo la verificacion para el cambio de clave
else
pues como que no era el mismo usuario
end if


Si la variable que yo necesito, user_id está guardada en la cookie y toma el valor temporal que pone arriba, si quiero hacer una select podría hacer:

select * from usuarios where user_id=temporal?;


user_id: nombre del campo de la tabla
id_user:nombre de la cookie

Además, ahora que me estoy dando cuenta, si al guardar la variable en la cookie, va más arriba el código de guardar cookie que de recogida de variable, es válido? se guardará?

Última edición por Shilfild; 17/04/2007 a las 03:30
  #4 (permalink)  
Antiguo 17/04/2007, 05:34
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Cookies

Voy a intentar explicar mi problema lo más claro que pueda a ver si alguien me puede ayudar x_x

Tengo dos páginas relacionadas con modificar:
- modificar.asp : Donde el usuario introduce su contraseña, valida que no esté vacia y la envia a guardarmod.asp
- guardarmod.asp: es el que hace la update de la contraseña (funciona bien con dos variables puestas dentro, pero no cuando estas son enviadas)

También está comprobarlogin.asp,que es donde guardo la variable en la cookie para que esté disponible en otras páginas y también desde ahi se accede a modificar.asp

Ahora copiaré el código que en mi opinión es necesario para saber dónde puede estar el problema, ya que no sé si puede ser que haya utilizado mal las cookies:

comprobarlogin.asp: donde quiero almacenar la cookie.

Código:
<%@LANGUAGE="JAVASCRIPT"%>
	<% Response.Cookies("id_user")%>

(más abajo)
sentencia="Select user_id,user_pass from usuarios where user_id='"+Request.form("txtnombre")+"'"
rstIntranet.Open(sentencia,cone,adOpenStatic,adCmdTable)
Aquí no sé si cogerá la cookie antes de hacer la select.

modificar.asp: donde quiero recoger la contraseña que quiere meter

Código:
if (campos==''){
		//enviar
		formmodif.submit()

(mas abajo)

	<tr valign="top">
		<td><form name="formmodif" id="formmodif" method="post" action="guardarmod.asp">
      <table width="450"  border="0" align="center" cellpadding="0" cellspacing="0" class="tb_form">
        <tr valign="top"> 
          <td><strong>Contrase&ntilde;a</strong></td>
          <td><input name="txtpass" type="text" id="txtpass" size="30" /></td>
        </tr>
      </table>
      <p> 
        <input type="reset" name="Reset" value="Borrar">
  		<input name="cmdenviar" type="button" onClick="comprobar()" value="Modificar">
guardarmod.asp: donde quiero hacer el update. No sé dónde poner el Request.Cookies, he probado arriba y dentro del código.

Código:
<%@LANGUAGE="JAVASCRIPT"%>
    <% temporal=Request.Cookies %>
(mas abajo)

<% 
 	pas="adf"
	us="hakuna"


 	password=Request.form("txtpass")
 	conex=Server.CreateObject("ADODB.Connection")
	conex.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="+Server.MapPath("portaljoven.mdb"))
	conex.Execute("UPDATE usuarios SET user_pass='"+ pas +"' where user_id='"+ temporal +"'")			 

%>
Lo malo es que no me da ningún error, dice que lo modifica pero no lo hace, en cambio si utilizo las variables que tengo ahi puestas pas y us si que funciona, he utilizado mal las cookies o algo asi?
  #5 (permalink)  
Antiguo 17/04/2007, 09:32
Avatar de allhen  
Fecha de Ingreso: septiembre-2005
Mensajes: 243
Antigüedad: 19 años, 7 meses
Puntos: 1
De acuerdo Re: Cookies

Cita:
<% temporal = Request.Cookies %>
Código:
<% 
temporal = Request.Cookies("id_user")
pas = Request.Form("txtpass")
 
conex.Execute("UPDATE usuarios SET user_pass='"& pas &"' where user_id='"& temporal &"'")
%>
__________________
En esta vida todo es posible ... excepto vencer a la muerte .

Última edición por allhen; 18/04/2007 a las 19:19
  #6 (permalink)  
Antiguo 18/04/2007, 01:06
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Cookies

Ya he cambiado eso, y sigue igual, sin dar ningún error pero sin modificar.

Puede ser que lo haya puesto mal otra vez?

Si el usuario es correcto: Guardo la cookie
Código:
if (rstIntranet("user_pass")==String(Request.form("txtpass"))){
			Session("Usuario")="Si"
			varww=rstIntranet.Fields("user_id")
			Response.Cookies("user_id")=varww
			Response.Cookies("user_id").Expires=Now+1		
			rstIntranet.Close
Llamo a la cookie para actualizar
Código:
temporal=Response.Cookies("id_user")
 	pas=Request.Form("txtpass")
	


 	password=Request.form("txtpass")
 	conex=Server.CreateObject("ADODB.Connection")
	conex.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="+Server.MapPath("portaljoven.mdb"))
	conex.Execute("UPDATE usuarios SET user_pass='"+ pas +"' where user_id='"+ temporal +"'")
  #7 (permalink)  
Antiguo 18/04/2007, 01:30
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Re: Cookies

no crees que esto
if (rstIntranet("user_pass")
== String(Request.form("txtpass"))){

deberia ser asi??
if (rstIntranet("user_pass") = String(Request.form("txtpass"))){
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #8 (permalink)  
Antiguo 18/04/2007, 01:37
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Cookies

No, ahí no está el problema, de hecho si lo cambio no puedo hacer nada, el login si que funciona.
El problema está en la cookie, habré puesto mal la sintaxis o algo... no sé
  #9 (permalink)  
Antiguo 18/04/2007, 02:31
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Re: Cookies

temporal=Response.Cookies("id_user")
pas=Request.Form("txtpass")

temporal=request.Cookies("id_user")
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #10 (permalink)  
Antiguo 18/04/2007, 02:47
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Cookies

Gracias Shiryu, pero aún así no cuaja X_x me sigue saliendo como antes, modificado! y después miras en la BD y sigue igual, pero la cosa curiosa esque si modificaba otro usuario. llamado 'hola' su password si lo cambiaba, he borrado ese dato y ya no modifica nada más, es la cookie la que debiera de pasar el usuario, no sé si habrá algo mal aquí:

Código:
sentencia="Select user_id,user_pass from usuarios where user_id='"+Request.form("txtnombre")+"'"
	rstIntranet.Open(sentencia,cone,adOpenStatic,adCmdTable)

(mas abajo)

if (rstIntranet("user_pass")==String(Request.form("txtpass"))){
			temporal=Response.Cookies("user_id")
			Session("Usuario")="Si"
			//log="user_id"
			//Session("logeo")=log	
			rstIntranet.Close
* Lo de la sesión está comentado porque he estado probando a ver si por Sesiones me iba bien, pero me da un error en el Response.Write Session("logeo") >_> segun esto, me falta un ; entre write y session y según los manuales no hay que poner nada.

Código:
	pas=Request.Form("txtpass");
	temporal=Request.Cookies("user_id")
 	conex=Server.CreateObject("ADODB.Connection")
	conex.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="+Server.MapPath("portaljoven.mdb"))
	conex.Execute("UPDATE usuarios SET user_pass='"+ pas +"' where user_id='"+ temporal +"'")
  #11 (permalink)  
Antiguo 18/04/2007, 05:41
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Cookies

Por fín resuelto, pego mi código por si le puede servir a alguien en un futuro

Declaración e inserción del dato:
Código:
Response.Cookies("login") =Request.Form("txtnombre")
Llamada desde otra página metiendolo en una variable
Código:
	usu=Request.Cookies("login")
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 21:27.