[PHP] problemi con session_start

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

Avrei un piccolo problema con session_start ed il seguente. In teoria almeno credo quando nel mio file paginaris.php lo vado a far girare, mi dovrebbe dare errore 404, cosa che invece non mi da. Come mai ???? Se mi loggo va tutto bene ma come se una volta loggato non uscisse più dal login. Invece prima funzionava ad hoc. Ossia se lo facevo girare mi dava errore 404. Questo è lo spezzone di codice della paginaris.ph forse mi sono dimenticato qualcosa ????

PHP:
<link rel="stylesheet" type="text/css" href="coloredisfondo.css">
 <link rel="stylesheet" type="text/css" href="thumb.css">
    <?php
require_once("connetti.php");
    session_start();
if(isset($_COOKIE["ultimoaccesso"])) {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $ultimo_cookie = $_COOKIE["ultimoaccesso"];
    $me= "Il tuo ultimo accesso è stato il:  $ultimo_cookie";
} else {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $me= "Non ti sei mai collegato a questa pagina";
}

session_start();

if(isset($_SESSION['nome'])) {

$array = mysql_query("SELECT * FROM utenti WHERE id=".$_SESSION['id']." '");

 //  $array=mysql_fetch_array($array);  
   
}


  ?>
<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>benvenuto</title>

<body>
   
<?php
session_start();


$array =  strtoupper($_SESSION['nome'] );     
 if(isset($_SESSION['nome']))  {   

    echo "<div class=\"messaggio\"><h1>";

   
echo "BENVENUTO ".$array."<br />";
   
    echo $me;
    echo "</h1></div>";
    echo "</body></html>";

}else{
    header("Location:failed.php");     
    exit();   
//}

}

//Visualizza l'avatr contenuto nel db

//$query =mysql_query("SELECT immagine FROM immagine WHERE id = $id");
// Codice che unisce due o più tabelle

$query =mysql_query("SELECT utenti.id, utenti.nome, immagine.immagine FROM utenti INNER JOIN
 immagine ON utenti.id =  immagine.id_nome WHERE id_nome = ".$_SESSION['id']);


while($foto=mysql_fetch_array($query))
   
{

 ?>
    <br> <br>       
    <img src="immages/<?php echo$foto["immagine"]?>" class="immages">
   
   
   
<?php
}

// Ricerca e visualizza l'utente che si è connesso con le info

$row = mysql_fetch_array(mysql_query("SELECT * FROM utenti WHERE id='".$_SESSION['id']."'"));
echo "<br> <br>";


        echo "Nome e cognome: ".$row['cognome'] . " ".$row['nome'];
       
        echo "<br>";
        echo "Username: ". $row['username'];
        echo "<br>";
        echo "EMail: ".$row['email'];
       
 ?>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
 <center> <br> <br>

<input type="button" onClick="window.location.href='upload.php';" style='padding:10px' value="Upload" />
<input type="button" onClick="window.location.href='modifica.php';" style='padding:10px' value="Modifica" />
<input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />
 </center>
    </body>
</html>

Spero in un vostro aiuto. Credo che non sia un crosspost. E' tutt0altro problema. Grazie.
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
Ciao, prova innanzitutto a inserire il session_start() nella primissima riga del file, prima del tag <Html> e anche prima del <!DOCTYPE>, inserendolo una volta sola (vedo che lo hai inserito due volte).
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Sì vero proverò anche così. Ma ho ovviare a distruggere la sessione è quindi è per questo che rimaneva sempre fissa. Difatti messo destroid_session è andata come dicevo io. Comunque apportare anche le modifiche date consigliato mi. Si può avere la distruzione della sessione a tempo ???? Grazie.
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
Non credo di aver capito cosa vuoi. Provo a rispondere a sentimento.

Per distruggere la sessione basta che aggiungi l'istruzione session_destroy(). Ovviamente distruggi la sessione quando le informazioni dell'utente non ti servono più, tendenzialmente quando si effettua il logout.
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
Puoi settare il cookie e farlo scadere dopo tot secondi.
PHP:
setcookie ("ultimoaccesso", $valore_cookie, time() + $durata_in_secondi);
// la variabile $durata_in_secondi non è altro che un intero che rappresenta appunto i secondi
// un valore pari a 60 farà scadere il cookie dopo un minuto
// un valore pari a 600 farà scadere il cookie dopo dieci minuti
// il valore 365 *24*3600 invece equivale a un anno.


Se invece al posto del cookie vuoi far scadere proprio la sessione, potresti procedere in questo modo.

1. Quando l'utente effettua il login salvi in tabella il timestamp corrente (che chiamiamo x)

2. A ogni pagina visitata dall'utente (o qualsiasi altra azione) confronti il timestamp corrente (y) con il timestamp precedente che hai salvato in tabella (x)

3.1. Se la differenza tra y e x corrisponde a un arco di tempo maggiore di 10 minuti (per esempio) , fai scadere la sessione e costringi l'utente a effettuare nuovamente il login

3.2. Se invece la differenza tra y e x corrisponde a un arco di tempo minore o uguale a 10 minuti, aggiorni il timestamp in tabella ponendo y=x e permetti all'utente di procedere.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Concettualmente mi piace. Bisognerebbe capire come realizzare una cosa del genere che sicuramente sul forum ci saranno degli esempi. Una cosa ma s può gestire il tasto "x" del browser in alti a d nel mio caso con Firefox in modo tale che quando lo clicchi su distrugge la sessione? ???
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
Questo è il comportamento di default, ossia le sessioni vengono distrutte alla chiusura del browser.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao AdeKnite,

Vorrei sapere una cosa, pensvo per vedere una pagina protetta fatta da me con session_start bastasse togliere o decommentare "session_start", ma invece mi sbagliavo. Come posso fare per vederla senza che mi debba registrare e modificare tutto il codice ???
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
Beh, se l'hai protetta bene, avrai sicuramente bisogno di alcune credenziali, immagino.
Se vuoi vederla senza dover inserire quelle credenziali e senza modificare tutto il codice, basta che togli la protezione.

Ora non so come hai strutturato la pagina e il relativo codice, per cui non posso essere molto mirato con la risposta.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ti mando il codice, le ho provate tutte ma non ci sono riuscito. Fra le altre cose non riesco nemmeno ad entrare con le credenziali che ho messo e non capisco il perchè. Una volta mi partiva l'email per l'attivazione utente adesso non mi parte più. Quindi uno dei moti sicuramente è quetso. Però sono andato su phpmyadmin ho un campo chiamato in questa maniera qua:

attivo ENUM('1', '0') DEFAULT '0',

L'ho modificato ad "1" a mano ma non mi accetta. Non capisco il perchè. Questo è il codice della paginaris.php

PHP:
<link rel="stylesheet" type="text/css" href="coloredisfondo.css">
 <link rel="stylesheet" type="text/css" href="thumb.css">
    <?php
require_once("connetti.php");
    session_start();
if(isset($_COOKIE["ultimoaccesso"])) {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $ultimo_cookie = $_COOKIE["ultimoaccesso"];
    $me= "Il tuo ultimo accesso è stato il:  $ultimo_cookie";
} else {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $me= "Non ti sei mai collegato a questa pagina";
}

session_start();

if(isset($_SESSION['nome'])) {

$array = mysql_query("SELECT * FROM utenti WHERE id=".$_SESSION['id']." '");

 //  $array=mysql_fetch_array($array);  
   
}


  ?>
<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>benvenuto</title>

<body>
   
<?php



$array =  strtoupper($_SESSION['nome'] );     
 if(isset($_SESSION['nome']))  {   

    echo "<div class=\"messaggio\"><h1>";

   
echo "BENVENUTO ".$array."<br />";
   
    echo $me;
    echo "</h1></div>";
    echo "</body></html>";

}else{
    header("Location:failed.php");     
    exit();   
//}

}

//Visualizza l'avatr contenuto nel db

//$query =mysql_query("SELECT immagine FROM immagine WHERE id = $id");
// Codice che unisce due o più tabelle

$query =mysql_query("SELECT utenti.id, utenti.nome, immagine.immagine FROM utenti INNER JOIN
 immagine ON utenti.id =  immagine.id_nome WHERE id_nome = ".$_SESSION['id']);


while($foto=mysql_fetch_array($query))
   
{

 ?>
    <br> <br>       
    <img src="immages/<?php echo$foto["immagine"]?>" class="immages">
   
   
   
<?php
}

// Ricerca e visualizza l'utente che si è connesso con le info

$row = mysql_fetch_array(mysql_query("SELECT * FROM utenti WHERE id='".$_SESSION['id']."'"));
echo "<br> <br>";


        echo "Nome e cognome: ".$row['cognome'] . " ".$row['nome'];
       
        echo "<br>";
        echo "Username: ". $row['username'];
        echo "<br>";
        echo "EMail: ".$row['email'];
       
 ?>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
 <center> <br> <br>

<input type="button" onClick="window.location.href='upload.php';" style='padding:10px' value="Upload" />
<input type="button" onClick="window.location.href='modifica.php';" style='padding:10px' value="Modifica" />
<input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />
 </center>
    </body>
</html>

E' un vecchissimo codice ancora con il vecchio metodo msql. vedi se riesci a togliere sta protezione magari te ci riesci. Grazie.
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
Ho dato un'occhiata e, a quanto vedo, lo script va a cercare la variabile di sessione "nome" e, se non la trova, ti rimanda alla pagina failed.php. La variabile di sessione qui non viene mai settata (desumendo che connetti.php sia il file di connessione al db e che non faccia nient'altro), per cui ogni volta che esegui lo script il risultato sarà sempre quello di essere reindirizzato.

Ho notato che il codice è molto impreciso. Vedo <html> e <body> aperti e chiusi più di una volta e i link ai CSS non inseriti nella <head>, oltre alla session_start() che si ripete due volte.

Il mio consiglio è quello di schiarirti le idee, identificando bene lo scopo della pagina e le funzioni che dovrà implementare. Successivamente dovresti passare alla pulizia, assolutamente necessaria, del codice.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Si questo l'avevi scritto sempre in aiuto qualche anno fa e funzionava a dire il vero. Però mi viene un dubbio che domani verificherà. Connetti.php mi viene il sospetto che sia solo l'indirizzo ip del mio nas a roma e non quello di anzio allora si spiegherebbe il motivo per cui no riesco ad entrare. Cioè perché manca l'indirizzo ip di anzio (mare) non so se mi sono spiegato cosa intendo.
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
No, direi che non ho capito.

Non vedo connessioni al database nel codice che hai postato, per cui ho desunto che quest'ultima si trovasse nel file connetti.php. Se così non fosse le query fallirebbero una dopo l'altra.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Dunque connessione.php contiene tutti i dati necessari per connettersi al db
purtroppo non ricordo se c'era anche l'indirizzo ip si anzio (mare del nas). Ovviamente presumo da quello che mi hsi detto che se non fosse previsto le query darebbero errore ho capito male ????
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Problemi con la stampa dei valori in php PHP 1
S Problemi delle funzioni eliminate con PHP e MySQL PHP 4
S Problemi con modulo upload video php (help!) PHP 0
E [PHP] problemi nuova riga con fwrite su piattaforma android PHP 5
M [PHP] Problemi con query unione PHP 11
M [PHP] Problemi con select PHP 6
M [PHP] Problemi con il riconoscimento login. PHP 21
M Problemi con database Apache/2.4.37 (Win32) OpenSSL/1.1.1a PHP/7.3.1 PHP 6
S [PHP] problemi con le sessioni PHP 3
T [PHP] problemi con il browser PHP 0
M [PHP] Problemi con login facebook PHP 0
F [PHP] Problemi di base con bot di telegram PHP 9
G Problemi con pagina online.php di una chat in php PHP 38
S Problemi con impostazioni php PHP 3
S [PHP] Problemi con Login e pagina Utente PHP 5
webmachine [PHP] Problemi con Login e pagina Utente PHP 3
L Refresh include php con jquery problemi negli script dopo load jQuery 2
F Problemi login con lo script php PHP 2
C Problemi con esercizi di php PHP 0
B Problemi con pannello di controllo PHP PHP 0
B Problemi con pannello di controllo PHP PHP 0
D PROBLEMI invio posta con php PHP 3
F nl2br di php crea problemi con javascript PHP 7
S problemi con ajax e php Ajax 3
R problemi con un vostro tutorial php. PHP 0
1 problemi con invio PHP PHP 11
M Problemi con apache non interpreta script php Apache 6
tanaka Problemi con Php , css e safari PHP 5
S problemi ad inviare mail in locale con php PHP 13
C Problemi con query Php PHP 1
M Problemi con Forum PHP crezione guidata PHP 1
V PROBLEMI CON IL pHP PHP 1
P Problemi con pagine php PHP 2
M Formail PHP - Problemi con account AOL PHP 1
W click tracking , problemi con la visualizzazione del php aiuto urgente PHP 1
S PHP - ACCESS --> problemi con query PHP 0
K problemi con php PHP 0
M Problemi con la configurazione di Php 4.2.3 come modulo Apache 1.3.27 PHP 0
Z Problemi con l'installazione php 4.3.9 PHP 0
F problemi con php PHP 3
N php problemi a visualizzare video PHP 3
L Problemi form Pagina php HTML e CSS 3
M [PHP] Problemi su inserimento array nel db PHP 7
M [PHP] Problemi di salvataggio su campo calcolato PHP 0
spider81man [PHP] Problemi cancellazione dato su DB [RISOLTO] PHP 1
D problemi login php 5.6 mysql PHP 1
M Problemi tra GROUP BY e tabella 'datagrid.class.php' PHP 6
ANDREA20 problemi carrello in php PHP 0
ANDREA20 [PHP] Problemi carrello commerciale PHP 0
giuseppe_123 Problemi form php/html PHP 33

Discussioni simili