Otros lugares, otras opciones :: Sin clasificar :: Consulta de PHP
Hola, estoy haciendo un trabajo para el curso, y me encuentro con el siguiente problema:
Paso los posts con email de usuario y contraseña. El contenido de ambos es "admin@omniparty.com".
Ok, pues me pasa lo siguiente:
echo $_POST['usuario'].'<br>'.sha1($_POST['password']);
$_SESSION['usuario'] = $_POST['usuario'];
$_SESSION['usuario']['contrasenia'] = sha1($_POST['password']);echo $_SESSION['usuario'].'<br>'.$_SESSION['usuario']['contrasenia'];
Pero en pantalla me muestra:
admin@omniparty.com
74dc73893aba8179ff0e922357037da3eb025171
Warning: Illegal string offset 'contrasenya' in C:xampphtdocswwwcredit_sintesi\_app\_controladoreslogin.cntrl.php on line 26
7dmin@omniparty.comWarning: Illegal string offset 'contrasenya' in C:xampphtdocswwwcredit_sintesi\_app\_controladoreslogin.cntrl.php on line 28
7
Me estoy volviendo loco, siempre me ha funcionado esto y ahora no, el trabajo es urgente y estoy perdiendo el tiempo con esta gilipollez de manera descomunal. Sospecho que puede ser algo de mi php.ini pero no tengo mucha idea de eso...
Nota: Los valores erróneos que me almacena en $_SESSION se mantienen en todas las páginas de la web, pero eso, son erróneos.
Nota 2: Al inicio de cada página tengo: el session_start y el session_regenerate_id
Mil gracias por adelantado a quien me pueda lanzar manos o pies.
A ver si le saco lustre a mis recuerdos de php.
Empecemos por el html: el marcado correcto es <br/> Que algunos navegadores son más exquisitos que otros...
Me llama la atención que te da el error con contrasenya cuando tú aquí pones contrasenia, pero sigo por si fuera un typo tuyo al pasar aquí el código.
Según esta respuesta de stack overflow (tu mejor amigo para estas cosas, primer resultado buscando Illegal string offset en google), te vendría bien inicializar tu array con
$myArray = array("campo1" => "valor1","campo2" => "valor2");
Sin embargo, dado que usas $_SESSION, que - si no me falla la memoria - es un array del propio PHP, éste debería estar inicializado.... Vale, veo que pusiste el session_start. Lo del session_regenerate_id, según el manual, es para cuando vas a salir de la sesión, para que no use en una segunda sesión el id de la anterior. Saca eso del principio de los scripts y ponlo dónde trates el fin de sesión, que es para lo que vale.
Echa un ojo a esto que te comento y si aún así nada, pásame el código de C:xampphtdocswwwcredit_sintesi\_app\_controladoreslogin.cntrl.php líneas 1 a 30 ;)
El problema es que le estás diciendo que guarde la contraseña en un array, cuando esa variable no está definida como tal.
Pone esto y te funcionará:
$_SESSION['usuario'][ùsuario'] = $_POST['usuario'];
$_SESSION['usuario']['contrasenia'] = sha1($_POST['password']);
El php ya lo olvide hace tiempo, gracias a dios. Pase a lenguajes de programacion mas completos. Así que, aunque creo que Tersoal tiene razón te recomendaría que uses otras páginas de consulta. Si posteas en stackoverflow te contestan siempre que no preguntes cosas como de que color es el cabalo blanco de santiago y hay muchos mas entendidos en la materia que en este foro, otra cosa es que confíes en la opinión de algunos conocido que sepas que leen este foro.
Un besazo a los pies de Tersoal :D Sabía que debía ser una tontería inmensa, pero que estaba ofuscado >.<
Gracias tmb a oideun ^^ Y en html5 es <br>, sin contrabarra. Para los navegadores exquisitos (IE, pa k engañarnos) ya uso el html5shiv, k es pa evitar que se vuelva loco (más loco todavía).
Empecemos por el html: el marcado correcto es
Que algunos navegadores son más exquisitos que otros...
Eso sólo es correcto si escribes / produces XHTML, que es algo que estaba bastante de moda en algunos círculos hace unos 10 años pero no acabó de cuajar. La mayoría de los navegadores han pasado bastante del tema.
HTML desde un principio usó siempre la etiqueta de fin de línea vacía (<br>, sin <comienzo> ni </final>) y sólo las restricciones sintácticas de XML obligaban a escribir <br/> en XHTML (no en HTML en general).