Iniciandome en PHP, duda memorizar sesion/visita

  • Autor Autor Kevin77
  • Fecha de inicio Fecha de inicio

Kevin77

Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola amigos, os comento de que va la cosa y a ver si alguien me puede ayudar.

Tengo una página en php, es más casi una página estática aunque la extensión es php y lo único que tiene de php son algunos require().

Estoy haciendo una fórmula en javascript para que me cambie el estilo de una etiqueta html (un div) al presionar un botón.

Aquí el problema, cuando le doy al menú para que me vaya a otra sección (servicios), me vuelve a cargar todo y me carga la página con el estilo original.
No se muy bien como enfocarlo, mi idea sería que en lo que dura esa visita y al cambiar el estilo tras presionar el botón se quedara ese estilo.

He leído algo de session_start() pero no tengo base de datos, por lo que no podría guardar usuarios.
No se si es mejor intentar memorizar la ip del usuario y que en lo que dure la conexión estuviese el estilo nuevo. Esta opción me hace dudar un poco por el tema de la protección de datos aquí en Europa. Ahora mismo no se si también necesitaría base de datos para esta opción

Realmente al no tener base de datos no estoy guardando los datos de nadie así que en ese aspecto creo que estoy salvado.

Al final me he liado y lo he mezclado un poco todo.
Gracias a todos.
 
Tienes bastantes errores de concepto importantes, session_start no tiene nada que ver con bases de datos ni tampoco con IPs. Yo te recomendaría darle un vistazo a un tutorial o curso básico antes de seguir, porque vas a perder más tiempo improvisando como ahora que aprendiendo bien desde la base.

Lo que tú buscas son las variables de sesión, que son las que te permiten almacenar un valor temporalmente hasta que el usuario cierra el navegador.

Guardando ese dato que quieras en esa variable en PHP, podrás acceder a ella desde cualquier página y con eso aplicar tus condiciones concretas solo para ese usuario durante esa sesión.
 
puedes poner un href a /servicios y fijate si los llamados de css y js proviene de https o http
 
y sobre la base de datos se recomienda cifrar toda la información, https en el dominio( Cloudflare es una excelente opción) y en backend con bcrypt, si no quieres usar base de datos puedes usar Localstorage o Cookies para guardar información de una sesión(Personas que visten tu web)
 
Sí, ando un poco perdido, si estoy haciendo un tutorial de php a medida que puedo pero voy muy lento para todo lo que me gustaría ir.

Sí, eso que dices es lo que busco, la verdad ahora me haces dudar un poco, en el tutorial hasta ahora hemos trabajado mucho las querys(creo que se llaman así a las llamadas a la bbdd, si no disculpar mi error), en algunas páginas que veo de php si veo muchas cosas que no entiendo, aunque intento adaptarme y aprender más.

puedes poner un href a /servicios y fijate si los llamados de css y js proviene de https o http
Lo probaré pero ahora mismo estoy trabajando en local.
Base de datos no tengo, miraré esas opciones, si el algo parecido a las cookies lo que quería hacer, pero no guarda cookies la página, es estática con extensión php se puede decir.

Gracias. Más orientado estoy.
 
Si estas en localhost debes usar http en los href para llamar los css, js,img,php o un ./ y la raíz del archivo(path)
con php usa _REQUEST para obtener los datos o $_COOKIE para la información de COOKIE y después hace lo que quieras(guardar en un txt, xls.. entre otras
 
Última edición:

Simplemente, pones esto como primera línea de todas tus páginas PHP:

session_start();

Después, podrás usar esto en cualquier página:

$_SESSION['mivariable'] = 'mivalor';

Y también recuperar el valor en cualquier página:

echo $variableRestacada = $_SESSION['mivariable'];

Con esto tienes lo necesario para empezar en lo que buscas, pero lo dicho, bases de datos y todo lo demás no tiene nada que ver.

Te recomendaría primero hacer un curso de PHP sin base de datos, porque me parece que en el curso que estás haciendo te están confundiendo al querer abarcar todo. PHP no tiene por qué vincularse para nada con una database, que se haga a menudo, no significa que sea obligatorio.

Suerte!
 
Gracias, la verdad es que andaba pensando eso que estas diciendo. Cuando empecé el tutorial esperaba que me enseñaran mas eventos, crear clases creo que se puede también, su forma de escritura, son conceptos un poco básicos y lo mismo no son las palabras correctas.

Si lleva unas cuantas lecciones con phpmyadmin, que se agradece la cultura, pero ahora tengo otras prioridades en php.

Gracias compañero, lo probaré a ver que tal.

Si, hasta el momento las rutas las tengo bien configuradas, estoy algo verde y en el tutorial solo hemos visto el _REQUEST para obtener datos de los formularios, miraré a ver $_COOKIE, no quería guardar nada, solo que en lo que navegase por la página me dejase ese estilo cambiado.

Gracias compañero.
 
Genial, las variables de sesión son justo para eso, guardar información temporal mientras navegas por páginas.
Las variables de sesión son igual que una cookie, pero se controlan desde el servidor, lo cual las hace mucho más seguras (el usuario no puede cambiar su valor) y además no necesitan documentación ni demás requisitos legales.
De nada!
 
A ver si vas a aprender aprende bien lo primero es declarar session_start de la forma correcta.

PHP ha cambiado y evolucionado. Si utilizas session_start(); tendrás problemas de seguridad y rendimiento primero vamos a comprobar las versiones de PHP


PHP:
if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
 if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
  if(session_status() == PHP_SESSION_NONE) {
   session_start(array(
  'cache_limiter' => 'private',
  'read_and_close' => true,
  ));
 }
} else if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
   if (session_status() == PHP_SESSION_NONE) {
    session_start();
   }
} else {
   if(session_id() == '') {
    session_start();
  }
}

Desde PHP 7 se recomienda usar las etiquetas read_and_close y cache_limiter para privatizar el acceso a los componentes ID's AL del motor zend

Ahora podemos utilizar las sesiones de forma optima podemos declarar un dato de la siguiente forma

PHP:
$_SESSION['name'] = 'Agnes';

Luego debemos cerrar la sesión si no escribiremos mas datos

PHP:
session_write_close();

Ahora podemos consultar nuestro valor utilizando la sesión establecida, tenga en cuenta definir un dato por defecto para evitar errores.
PHP:
$name = $_SESSION['name'] ?? 'Anonymous';
 
Si pensaba que estaba verde no digo más jajajaja.

La verdad no se ni que version de php utiliza, lo consultaré a ver.
He estado probando con el session start() y parecía que me funcionaba bien, me da todavía algún error por una función, pero de sintaxis por lo que me dice console, ando mirando a ver si lo saco.

Gracias.