Foros del Web » Programando para Internet » PHP »

requiero una mano con esto que me esta volviendo loco

Estas en el tema de requiero una mano con esto que me esta volviendo loco en el foro de PHP en Foros del Web. Saludos muy buenas este script lo que hace es autentificar usuarios para las paginas desde donde se llame al script. estas paginas pues pediran un ...
  #1 (permalink)  
Antiguo 08/04/2011, 23:10
 
Fecha de Ingreso: abril-2011
Mensajes: 12
Antigüedad: 13 años, 8 meses
Puntos: 0
requiero una mano con esto que me esta volviendo loco

Saludos muy buenas este script lo que hace es autentificar usuarios para las paginas desde donde se llame al script. estas paginas pues pediran un login.

El asunto es que logre que el script tuviera varios passwords asignados para sistintos usuarios.

hasta ahi vamos bien:

el script original solo permite un password y yo queria ponerle varios para poder dar un password a cada usuario en particular, si alguien se porta mal pues simplemente borro su password del script y listo, como estaba el original si alguien se portaba mal tenia que cambiar el password y entonces notificar a todos los usuarios, vaya trabajo.

El script crea una cookie con un tiempo especificado en segundos, cuando este tiempo acaba pues si el usuario trata de visitar una pagina protegida le vuelve a pedir login.

En el original esto del tiempo de cookie estaba PERFECTO pero con un solo password, ahora tengo varios passwords perfectamente pero el tiempo de cookie solo dura 1 segundo aunque le tengo especificado 3600 segundos.

Aqui esta el script con varios passwords y el tiempo de cookies jodido por favor yo no se como arreglar esto si alguien puede corregirmelo yo y mi familia estaremos eternamente agradecidos por los siglos de los siglos aun estemos en el cielo o lo contrario.

Código PHP:
Ver original
  1. <?php
  2.  
  3. /* Config Section */
  4.  
  5. $pass = array('123', 'marvinx15', 'jtomasx15', 'hendy', 'shary');               // Set the password.
  6. $cookiename = 'sascookie';              // Optional change: Give the cookie a name. Default is sascookie
  7. $expirytime = time()+3600;              // Optional change: Set an expiry time for the password (in seconds). Default is 1 hour.
  8. $msg        = 'Password Incorrecto';    // Optional change: Error message displayed when password is incorrect. Default is "Password incorrect".
  9.  
  10. /* End Config */
  11.  
  12. /* Logout Stuff - Sept 5, 2005 */
  13.  
  14. if (isset($_REQUEST['logout'])) {
  15.     setcookie($cookiename,'',time() - 3600);                            // remove cookie/password
  16.     if (substr($_SERVER['REQUEST_URI'],-12)=='?logout=true') {          // if there is '?logout=true' in the URL
  17.         $url=str_replace('?logout=true','',$_SERVER['REQUEST_URI']);    // remove the string '?logout=true' from the URL
  18.         header('Location: '.$url);                                      // redirect the browser to original URL
  19.     }
  20.     show_login_page('');
  21.     exit();
  22. }
  23.  
  24. $logout_button='<form action="'.$_SERVER['REQUEST_URI'].'" method="post"><input type="submit" name="logout" value="Logout" /></form>';
  25. $logout_text='<a href="'.$_SERVER['REQUEST_URI'].'?logout=true">Logout</a>';
  26.  
  27. /* End Logout Stuff */
  28.  
  29. /* FUNCTIONS */
  30. $encrypt_pass = array();
  31. $submitted_pass = '';
  32. foreach($pass as $password)
  33. {
  34.     $encrypt_pass[] = (md5($password)); // encrypt password
  35. }
  36.  
  37.  
  38. function setmycookie() {
  39. global $cookiename,$encrypt_pass,$expirytime, $submitted_pass;
  40.     setcookie($cookiename,$submitted_pass,$expirytime);
  41. }  
  42.  
  43. function show_login_page($msg) {
  44. ?>
  45. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  46. <html xmlns="http://www.w3.org/1999/xhtml">
  47. <head>
  48. <title>Authorization Required</title>
  49. <style type="text/css">
  50. <!--
  51. .error {color:#A80000}
  52. body {font:90% Verdana, Arial, sans-serif;color:#404040}
  53. #wrapper {width:800px;margin:0 auto;border:1px solid #606060}
  54. #main {text-align:center;padding:15px}
  55. #header {font:bold 130% Verdana, Arial, sans-serif;color:#DDDDDD;width:100%;height:5em;text-align:center;background:#A80000;line-height:5em}
  56. #mid {margin:5em 0 5em 0}
  57. #footer {font-size:75%;text-align:center;width:100%}
  58. input {border:1px solid #606060; background: #DDDDDD}
  59. -->
  60. </style>
  61. </head>
  62. <body bgcolor="#000000">
  63. <div id="wrapper">
  64.     <div id="header"><font color="#FFFFFF">Autorizacion Requerida</font></div>
  65. <div id="main">
  66.     <div id="mid">
  67.        
  68.         <form action="" method="POST">
  69.             <b><font face="Lucida Sans" size="6"><font color="#CC3300">PD</font><font color="#FFFFFF">Jupiter.info
  70.         | Canales Premium en Vivo<br>
  71.             <br>
  72.             </font></font><font face="Lucida Sans" size="3" color="#FFFF00">Su
  73.             sesión ha sido terminada por inactividad, favor ingrese su password
  74.             nuevamente.</font></b><p><font color="#FFFFFF"><b>Password</b></font><b><font color="#FFFFFF">:</font></b>&nbsp;<input type="password" name="password" size="20">&nbsp;
  75.             <input type="submit" value="Login">
  76.             <input type="hidden" name="sub" value="sub">
  77.             </p>
  78.         </form>
  79.         <div class=error><?=$msg?></div>
  80.     </div>
  81. </div>
  82. </div>
  83. <div id="footer"><b><font color="#FFFFFF">Authentication by </font> <a href="http://www.pdjupiter.info">
  84.     pdjupiter.info</a><font color="#FFFFFF">&nbsp; Copyright 2011.</font></b></div>
  85. </body>
  86. </html>
  87. <? }
  88.  
  89. /* END FUNCTIONS */
  90.  
  91. $errormsg='';
  92. if (substr($_SERVER['REQUEST_URI'],-7)!='sas.php') {// if someone tries to request sas.php
  93.     if (isset($_POST['sub'])) {                     // if form has been submitted
  94.         $submitted_pass=md5($_POST['password']);    // encrypt submitted password
  95.         if (!in_array($submitted_pass, $encrypt_pass)) {        // if password is incorrect
  96.             $errormsg=$msg;
  97.             show_login_page($errormsg);
  98.             exit();
  99.         } else {                                    // if password is correct
  100.             setmycookie();
  101.         }
  102.     } else {
  103.         if (isset($_COOKIE[$cookiename])) {         // if cookie isset
  104.             if ($_COOKIE[$cookiename]==$encrypt_pass) { // if cookie is correct
  105.                // do nothing
  106.             } else {                                // if cookie is incorrect
  107.                 show_login_page($errormsg);
  108.                 exit();
  109.             }
  110.         } else {                                    // if cookie is not set
  111.             show_login_page($errormsg);
  112.             exit();
  113.         }
  114.     }
  115. } else {
  116.     echo 'Try requesting demo.php';
  117. }
  118. ?>


Gracias por adelantado
  #2 (permalink)  
Antiguo 09/04/2011, 00:17
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 10 meses
Puntos: 260
Sonrisa Respuesta: requiero una mano con esto que me esta volviendo loco

Hola,

Posiblemente, $encrypt_pass ahora es un Array(),

Código:
		$submitted_pass=md5($_POST['password']);	// encrypt submitted password
		if (!in_array($submitted_pass, $encrypt_pass)) {		// if password is incorrect
			$errormsg=$msg;
.........
		if (isset($_COOKIE[$cookiename])) {			// if cookie isset
			if ($_COOKIE[$cookiename]==$encrypt_pass) {	// if cookie is correct
			   // do nothing
			   //$submitted_pass = $_COOKIE[$cookiename];
			   //setmycookie();
			} else {								// if cookie is incorrect
Saludos,
  #3 (permalink)  
Antiguo 09/04/2011, 04:59
 
Fecha de Ingreso: abril-2011
Mensajes: 12
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: requiero una mano con esto que me esta volviendo loco

Hermano mio muchas gracias por tu ayuda

te dire, para yo poder poner ese script multi password tuve que pagar a un programador, con esto tu digo que yo soy un novataso en php por lo que me has dejado la cabeza hecha un huevo revuelto con lo que me dices que haga en el script.

Yo quisiera que si alguien esta en la disponibilidad aunque sea el dia que sea pues me corriga el script por favor yo lo agradezco eternamente y asi no tengo que pagar a nadie mas para esto.

Por favor es que yo no se nada de php


saludos.
  #4 (permalink)  
Antiguo 09/04/2011, 07:07
 
Fecha de Ingreso: febrero-2010
Ubicación: Republica Dominicana
Mensajes: 53
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: requiero una mano con esto que me esta volviendo loco

Hermano Prueba el siguiente codigo y dime k tal, solo le cambie una variable.
Luego me dices k tal

<?php

/* Config Section */

$pass = array('123', 'marvinx15', 'jtomasx15', 'hendy', 'shary'); // Set the password.
$cookiename = 'sascookie'; // Optional change: Give the cookie a name. Default is sascookie
$expirytime = time()-3600; // Optional change: Set an expiry time for the password (in seconds). Default is 1 hour.
$msg = 'Password Incorrecto'; // Optional change: Error message displayed when password is incorrect. Default is "Password incorrect".

/* End Config */

/* Logout Stuff - Sept 5, 2005 */

if (isset($_REQUEST['logout'])) {
setcookie($cookiename,'',$expirytime); // remove cookie/password
if (substr($_SERVER['REQUEST_URI'],-12)=='?logout=true') { // if there is '?logout=true' in the URL
$url=str_replace('?logout=true','',$_SERVER['REQUEST_URI']); // remove the string '?logout=true' from the URL
header('Location: '.$url); // redirect the browser to original URL
}
show_login_page('');
exit();
}

$logout_button='<form action="'.$_SERVER['REQUEST_URI'].'" method="post"><input type="submit" name="logout" value="Logout" /></form>';
$logout_text='<a href="'.$_SERVER['REQUEST_URI'].'?logout=true">Logout</a>';

/* End Logout Stuff */

/* FUNCTIONS */
$encrypt_pass = array();
$submitted_pass = '';
foreach($pass as $password)
{
$encrypt_pass[] = (md5($password)); // encrypt password
}


function setmycookie() {
global $cookiename,$encrypt_pass,$expirytime, $submitted_pass;
setcookie($cookiename,$submitted_pass,$expirytime) ;
}

function show_login_page($msg) {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Authorization Required</title>
<style type="text/css">
<!--
.error {color:#A80000}
body {font:90% Verdana, Arial, sans-serif;color:#404040}
#wrapper {width:800px;margin:0 auto;border:1px solid #606060}
#main {text-align:center;padding:15px}
#header {font:bold 130% Verdana, Arial, sans-serif;color:#DDDDDD;width:100%;height:5em;text-align:center;background:#A80000;line-height:5em}
#mid {margin:5em 0 5em 0}
#footer {font-size:75%;text-align:center;width:100%}
input {border:1px solid #606060; background: #DDDDDD}
-->
</style>
</head>
<body bgcolor="#000000">
<div id="wrapper">
<div id="header"><font color="#FFFFFF">Autorizacion Requerida</font></div>
<div id="main">
<div id="mid">

<form action="" method="POST">
<b><font face="Lucida Sans" size="6"><font color="#CC3300">PD</font><font color="#FFFFFF">Jupiter.info
| Canales Premium en Vivo<br>
<br>
</font></font><font face="Lucida Sans" size="3" color="#FFFF00">Su
sesión ha sido terminada por inactividad, favor ingrese su password
nuevamente.</font></b><p><font color="#FFFFFF"><b>Password</b></font><b><font color="#FFFFFF">:</font></b>&nbsp;<input type="password" name="password" size="20">&nbsp;
<input type="submit" value="Login">
<input type="hidden" name="sub" value="sub">
</p>
</form>
<div class=error><?=$msg?></div>
</div>
</div>
</div>
<div id="footer"><b><font color="#FFFFFF">Authentication by </font> <a href="http://www.pdjupiter.info">
pdjupiter.info</a><font color="#FFFFFF">&nbsp; Copyright 2011.</font></b></div>
</body>
</html>
<? }

/* END FUNCTIONS */

$errormsg='';
if (substr($_SERVER['REQUEST_URI'],-7)!='sas.php') {// if someone tries to request sas.php
if (isset($_POST['sub'])) { // if form has been submitted
$submitted_pass=md5($_POST['password']); // encrypt submitted password
if (!in_array($submitted_pass, $encrypt_pass)) { // if password is incorrect
$errormsg=$msg;
show_login_page($errormsg);
exit();
} else { // if password is correct
setmycookie();
}
} else {
if (isset($_COOKIE[$cookiename])) { // if cookie isset
if ($_COOKIE[$cookiename]==$encrypt_pass) { // if cookie is correct
// do nothing
} else { // if cookie is incorrect
show_login_page($errormsg);
exit();
}
} else { // if cookie is not set
show_login_page($errormsg);
exit();
}
}
} else {
echo 'Try requesting demo.php';
}
?>

Última edición por gdls; 09/04/2011 a las 07:13
  #5 (permalink)  
Antiguo 09/04/2011, 07:16
 
Fecha de Ingreso: abril-2011
Mensajes: 12
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: requiero una mano con esto que me esta volviendo loco

Gracias por tu ayuda pero esta igual la cookie no dura mas que un segundo luego haces refresh y pide el password otravez, deberia de durar 3600 segundos para que la cookie caduque ya no se que hacer

Si quieres puedes probarlo tu mismo llamalo desde una pagina.php la variable es


<?php
require("sas.php");
?>


entonces al visitar esa pagina te pedira un password puedes usar cualquira de los especificados en el script y veras que el sistema
de cookies no caduca en el tiempo especificado en> $expirytime = time()+7200; sino que solo dura 1 segundo.


Agradezco cualquier esfuerzo

Última edición por publidom; 09/04/2011 a las 07:23
  #6 (permalink)  
Antiguo 09/04/2011, 08:22
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 10 meses
Puntos: 260
Sonrisa Respuesta: requiero una mano con esto que me esta volviendo loco

Hola,

Haberlo dicho antes, si quieres que te haga el trabajo es otra cosa, es más, ni siquiera te voy a explicar que significan las líneas de colores.

Código:
		$submitted_pass=md5($_POST['password']);	// encrypt submitted password
		if (!in_array($submitted_pass, $encrypt_pass)) {		// if password is incorrect
			$errormsg=$msg;
.........
		if (isset($_COOKIE[$cookiename])) {			// if cookie isset
			if (in_array($_COOKIE[$cookiename], $encrypt_pass)) {	// if cookie is correct
			   // do nothing
			   //$submitted_pass = $_COOKIE[$cookiename];
			   //setmycookie();
			} else {								// if cookie is incorrect
Bueno no me puedo resisitir ... la línea gris es porque tenías que aplicar el mismo concepto de lógica de programación a la línea roja. La línea roja estaba mal, estabas comparando igualdad de un String con un Array, y aunque PHP no 'alega' por eso seguramente te va a decir que no son iguales. Y las líneas verdes sirven para actualizar la cookie si tiene actividad antes de los 3600's; y de esta forma no cierre la sesión aún pasados los 3600's pero tuvo actividad en el ínterin (aunque las dejé comentadas).

Ahora, cambia la línea roja en tu programa y quita la marca de comentario de las líneas verdes si crees que esa es la lógica que se debe aplicar.

Saludos,
  #7 (permalink)  
Antiguo 09/04/2011, 10:06
 
Fecha de Ingreso: abril-2011
Mensajes: 12
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: requiero una mano con esto que me esta volviendo loco

Con eso que dices ahora la cookie nunca caduca.

A ver si me explico

El script originalmente solo tenia un password y trabajaba de la siguiente manera:

Cuando alguien visitaba una pagina que llamaba ese script debia introducir el password
entonces se creaba una cookie que duraba el tiempo en segundos que se especifica
en el script. no importa lo que el usuario hiciera no tenia que volver a hacer login hasta que
esa cookie caducaba.

Ahora bien luego de modificado el script funcionaba perfecto con varios usuarios especificados, uno podiar entrar con cualquiera de esos passwords especificados en el script.
pero ya la cookie solo duraba activa un segundo cuando tenia 3600 segundos especificados.

En conclusion y por ultimo porque ya no voy a quitar mas tiempo a nadie.

Quiero que la cookie dure el tiempo que se especifique no importa con cual usuario haga login.

No quiero que la cookie trabaje en funcion del usuario que uno use sino que no importa que
usuario uno use la cookie dure 3600 segundos activa.

Por ejemplo hago login con cualquier usuario, se crea la cookie de 3600 segundos de sesion
y cuando caduque pues puedo usar cualquie usuario y se vuelve a crear por 3600 segundos mas

es todo ...

Un saludos y ojala tenga suerte porque no se imaginan cuanto nesecito esto.

Gracias excelente foro.

Etiquetas: loco, mano, requiero
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 06:11.