<div dir="ltr">Hola,<div><br></div><div>Gracias por las respuestas.</div><div><br></div><div>>>>>>>>>> Sebastian: </div><div><br></div><div>la tabla tiene id incremental.</div><div><br></div><div>>>>>>>>>> Leo:</div><div><br></div><div>En index.php (donde uno se loguea) el formulario tiene:</div><div><br></div><div><input name="email" type="email"><br></div><div><input name="pass" type="password"> </div><div><br></div><div> y una vez que valida crea las variables de sesión $_SESSION['email'] y $_SESSION['pass']</div><div><br></div><div>========================================================</div><div>Luego en cada script se incluye una función de chequeo de login:</div><div><br></div><div><br></div><div>/***** funciones.php *****/</div><div><br></div><div>//el servidor tiene una versión que no soporta mysqli</div><div><br></div><div><div>function usr_exists($e, $p, $link){</div><div><span class="" style="white-space:pre">              </span></div><div><span class="" style="white-space:pre">   </span>$sql="SELECT * FROM usr WHERE email='$e' AND pass='$p';";</div><div><span class="" style="white-space:pre">        </span>$result=mysql_query($sql,$link)or die(mysql_error());</div><div><span class="" style="white-space:pre">      </span>$cant=mysql_num_rows($result);</div><div><span class="" style="white-space:pre">             </span></div><div><span class="" style="white-space:pre">   </span>return($cant==1)?TRUE:FALSE;</div><div><span class="" style="white-space:pre">               </span></div><div>}</div></div><div><br></div><div><br></div><div>Que la invoco debajo de ésta, al comienzo de cada script:</div><div><br></div><div>/***** check.php *****/<br></div><div><br></div><div>session_start();<br></div><div>if (usr_exists($_SESSION['email'], $_SESSION['pass'], $link) == FALSE) {</div><div>     session_destroy();</div><div>     header("Location:index.php")<br></div><div>}</div><div><br></div><div>==========================================================</div><div>En el script donde doy de alta una persona el formulario tiene, entre otros campos, los de email y contraseña. Estos campos NO tiene los mismos nombres que en index.php.</div><div><br></div><div><input type="email" name="email_usr" value="<?=$email?>"><br></div><div><input type="password" name="pass_usr" value="<?=$pass?>"><br></div><div><br></div><div>El action del formulario apunta al mismo script, o sea action=""</div><div><br></div><div>Entonces cuando se envía por POST lo que tiene el script resumidamente es:</div><div><br></div><div><div>include ("funciones.php");<span class="" style="white-space:pre">                        </span></div><div>include ("check.php");</div></div><div><br></div><div>if (isset($_POST['enviar'])){ <br></div><div><br></div><div>    $email = $_POST['email_usr'];</div><div><span style="white-space:pre">    </span>$pass = $_POST['pass_usr'];</div><div><br></div><div>    //chequeo si no es un email existente y si no es inserto en la DB</div><div><br></div><div><div>    $sql="INSERT INTO usr SET email='$email', pass='$pass';";<span class="" style="white-space:pre">                      </span></div><div><span style="white-space:pre">    </span>$result=mysql_query($sql,$link)or die(mysql_error());</div></div><div><br></div><div><div>    if ($result){</div><div><span class="" style="white-space:pre">     </span>$_SESSION['output'] = "El telemarketer se ha agregado exitosamente.";</div><div><span class="" style="white-space:pre">    </span>header ('Location: telemarketers.php');</div></div><div>   }</div><div><br></div><div>============================================================</div><div><br></div><div>En telemarketers.php se muestra el listado de los que hay dados de alta y ahi tengo un print_r($_SESSION) que me muestra que las $_SESSION['email'] y $_SESSION['pass'] son reemplazadas por las que acabo de dar de alta. Obviamente, no me cierra la sesión porque a pesar que no es mi logueo, sigue siendo un logueo valido.</div><div><br></div><div>En este script tengo resumidamente:</div><div><br></div><div><div>include ("funciones.php");<span class="" style="white-space:pre">                   </span></div><div>include ("check.php");</div></div><div><br></div><div>print_r ($_SESSION);<br></div><div><br></div><div><div><br></div><div>if (isset($_SESSION['output'])){</div><div><br></div><div><span class="" style="white-space:pre">     </span>print $_SESSION['output'];</div><div><span class="" style="white-space:pre"> </span>unset ($_SESSION['output']);</div><div>}</div></div><div><br></div><div>Y luego una llamada a la DB para listar los telemarketers.</div><div><br></div><div>==========================================================</div><div><br></div><div>Espero que se entienda.</div><div>¡Muchas gracias!</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">El 13 de octubre de 2015, 5:45 p. m., Leonardo Tadei - Pegasus Tech Supply<span dir="ltr"><<a href="mailto:leonardot@pegasusnet.com.ar" target="_blank">leonardot@pegasusnet.com.ar</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hola Carolina,<br>
<span class=""><br>
El mar, 13-10-2015 a las 15:35 -0300, Silverzero escribió:<br>
> Hola,<br>
><br>
><br>
> Sé que esto es una consulta fuera del curso actual, pero quería ver si<br>
> alguien me puede dar una pista porque no encuentro las palabras clave<br>
> justas para que google me encuentre la respuesta que busco.<br>
<br>
</span>        La idea de la lista es usarla. Las preguntas de los egresados son muy<br>
enriquecedoras, porque suelen ser de situaciones reales.<br>
<span class=""><br>
> Tengo un sistema donde me logueo y una vez dentro, entre otras cosas,<br>
> puedo dar de alta nuevas personas para que se puedan loguear como yo.<br>
><br>
><br>
> El tema es que cuando la doy de alta con email y contraseña, me<br>
> sobreescribe mis variables de sesión con esos datos. El script sólo<br>
> inserta los datos en la DB, no hace nada con variables sesion, y los<br>
> inputs del formulario tiene otros nombres diferentes a las variables<br>
> de sesion. ¿A alguien le pasó algo parecido? ¡No sé qué se me está<br>
> pasando por alto!<br>
<br>
</span>        Sin ver el código es difícil diagnosticar, pero es de suponer que al<br>
principio de cada script estás incluyendo el código que valida al<br>
usuario o a la sesión.<br>
        Este código debería tener una lógica tal que, si el usuario está<br>
ingresando, lo loguea tomando los los datos de los INPUTs, y sino lo<br>
valida contra los datos de la sesión (más o menos como vimos en el<br>
curso)<br>
        Entonces, si al dar de alta un usuario nuevo los INPUT se llaman igual<br>
que los de la pantalla de login, y si la evaluación de los input se<br>
ejecuta primero que la sesión, lo que te está pasando es que para el<br>
script de auntentificación los datos de alta de un usuario pasan por un<br>
nuevo login, con lo que se te actualizan las variables de sesión y<br>
quedás logueada como el usuario recién creado.<br>
<br>
        Si esto es así, bastarían con que los nombres de los INPUT de los<br>
usuarios nuevos sean distintos de los de la pantalla de inicio de<br>
sesión...<br>
<span class=""><br>
> Lo que noto es que el navegador me rellena automáticamente los campos<br>
> de email y contraseña con los míos de sesion, sospecho que puede venir<br>
> por ahí...¿puede ser que el navegador me los cambie asumiendo que<br>
> estoy cambiando los datos de mi propio logueo a pesar de que los<br>
> inputs tengan nombres diferentes a las variables de sesion? ¿Será por<br>
> el input type email / password? Probé en varios navegadores y en todos<br>
> sucede lo mismo.<br>
<br>
</span>        No, no puede ser.<br>
        El navegador completa datos guardados automáticamente si son del mismo<br>
dominio y se llaman igual que los guardados.<br>
        Pero que el navegador los complete no implica que se envíen y además es<br>
imposible para el navegador cambiar datos de una sesión si no envía<br>
datos.<br>
<br>
<br>
> ¡Saludos!<br>
> ¡Gracias!<br>
<br>
<br>
        Por nada.<br>
        Después contanos!<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Leonardo Tadei<br>
<a href="mailto:leonardot@pegasusnet.com.ar">leonardot@pegasusnet.com.ar</a><br>
Web: <a href="http://leonardo.tadei.com.ar" rel="noreferrer" target="_blank">http://leonardo.tadei.com.ar</a><br>
Firma pública: <a href="http://www.pegasusnet.com.ar/LeonardoTadei-public.key" rel="noreferrer" target="_blank">http://www.pegasusnet.com.ar/LeonardoTadei-public.key</a><br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
Lista de correo: Php-avanzado<br>
Mensajes a la lista: <a href="mailto:Php-avanzado@pato2.fi.mdp.edu.ar">Php-avanzado@pato2.fi.mdp.edu.ar</a><br>
Administración Web: <a href="http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado" rel="noreferrer" target="_blank">http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado</a><br>
Desubscripción: <a href="http://php-avanzado-request@pato2.fi.mdp.edu.ar?subject=unsubscribe" rel="noreferrer" target="_blank">php-avanzado-request@pato2.fi.mdp.edu.ar?subject=unsubscribe</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Carolina</div>
</div>