[PHP] Sessione Login

miagy

Utente Attivo
2 Nov 2014
71
0
6
Ciao ragazzi.
Data una tabella MySql chiamata event, ho creato un calendario di "promemoria" che funziona correttamente. Quando un dato, attualmente globale, viene inserito, l'icona del calendario si riempie attraverso questo pezzo sorgente:

PHP:
for ($list_day = 1; $list_day <= $daysinmonth; $list_day++) {
        $tm = date("U", mktime(0, 0, 0, $month, $list_day, $year)) - 86400; // Bir gün önce
        $tn = date("U", mktime(0, 0, 0, $month, $list_day, $year)); // O gün ...
        $tp = date("U", mktime(0, 0, 0, $month, $list_day, $year)) + 86400; // Bir gün sonra
        $Q = sprintf("SELECT * FROM ´events´ WHERE ´Autore´ = ´$Autore´ AND ´date´ > ´%s´ AND ´date´ < ´%s´ AND ´day´ = ´%s´;", $tm, $tp, $list_day);
        $R = mysql_query($Q);
        $D = mysql_fetch_assoc($R);
        $S = mysql_num_rows($R);
        $Y = $D[´date´];
        $TheDay = date(´d´, $Y);
        $TheMon = date(´F´, $Y);
        $TheYea = date(´Y´, $Y);
        $time = $D[´time´];
        list($hour, $minute) = explode(´:´, $time);
        mysql_free_result($R);
        if (($S) AND ($Autore == ´´)) {
        ?>
            <td align="center" style="background-color: #FFFFFF; color: #FFFFFF; border: 1px solid #FFFFFF; cursor: pointer;" onmouseover="return overlib(´<table width="100%" border="0" class="popupDateTable"><tr><td align="center" class="popupDate"><?php echo stripslashes($D[´title´]); ?> ore <?php echo date($D[´time´]); ?> <?php echo ´@´ . stripslashes($D[´location´]); ?></td></tr></table>´);" onmouseout="return nd();" title="">
        <?php
        }

Come promemoria globale, funziona tutto alla perfezione.
Ultimamente ho in mente di creare un promemoria personalizzato, legato cioè al singolo utente loggato.
Ho agito dunque in questo modo:

  • Ho già creato un panel in cui l´inserimento dei dati (prenotazioni utente), dentro la tabella event, avviene senza problemi.
  • Ho valorizzato all´inizio, dopo il session_start(), la sessione Login (ho provato anche con un print ed è tutto okay)
    PHP:
    $utente = $_SESSION['Login'];
  • Dopo il primo if qui sopra, ho aggiunto questa riga
    PHP:
    } elseif (($S) AND ($Autore == $utente)) {
            ?>
                <td>bla bla

Il risultato però è nullo e non capisco il motivo.
Ho provato anche il blando Autore == $_SESSION['Login'], ma nulla. E' come se non esistesse nessun dato (cosa falsa, ovviamente).
 

miagy

Utente Attivo
2 Nov 2014
71
0
6
ciao
sarebbe opportuno che tu scrivessi un po' più di codice relativo a quell'if

Certo: nella sua interezza è questo:

PHP:
<?
//Personalizzato//

if (($S) AND ($Autore == $utente)) { ?>
            <td align="center" style="background-color: #e6e7e7; color: #618dd6; border: 1px solid #888888; cursor: pointer;" onmouseover="return overlib('&lt;table width=&quot;100%&quot; border=&quot;0&quot; class=&quot;popupDateTable&quot;&gt;&lt;tr&gt;&lt;td align=&quot;center&quot; class=&quot;popupDate&quot;&gt;<?php echo stripslashes($D['title']); ?> ore <?php echo date($D['time']); ?> <?php echo '@' . stripslashes($D['location']); ?>&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;');" onmouseout="return nd();" title="">
<? //Chiudo e Globale

        } elseif (($S) AND ($Autore == '')) {
        ?>
            <td align="center" style="background-color: #e6e7e7; color: #618dd6; border: 1px solid #888888; cursor: pointer;" onmouseover="return overlib('&lt;table width=&quot;100%&quot; border=&quot;0&quot; class=&quot;popupDateTable&quot;&gt;&lt;tr&gt;&lt;td align=&quot;center&quot; class=&quot;popupDate&quot;&gt;<?php echo stripslashes($D['title']); ?> ore <?php echo date($D['time']); ?> <?php echo '@' . stripslashes($D['location']); ?>&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;');" onmouseout="return nd();" title="">
        <?php
        } elseif ($tn > $tm AND $tn < $tp AND date('j') == $list_day AND date('m') == $month AND date('Y') == $year) {
        ?>
            <td align="center" style="background-color: #11243a; color: #618dd6;  border: 1px solid #618dd6;">
        <?php
        } elseif ($theday == 6 or $theday == 0) {
        ?>
            <td align="center" style="background-color: #11243a; color: #e6e7e7; border: 1px solid #888888;">
        <?php
        } else {
        ?>
            <td align="center" style="background-color: #11243a; color: #e6e7e7; border: 1px solid #888888;">
        <?php
        }
       
       
       
        echo $list_day;

        echo '</td>';
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
non vedo session_start(), session_start deve esserci in tutte le pagine in cui usi le sessioni
poi non usare lo shortag <? ma usa <?php è meglio, soprattutto non fare la mescolanza
 

miagy

Utente Attivo
2 Nov 2014
71
0
6
Corretto con la tua indicazione.
Il session_start() è a inizio pagina:

PHP:
<?php session_start();

include ("../inc/parametri.inc.php");
include ("../inc/controllo.php");
include ("../inc/open2.php");
include ("../inc/controlloesilio.php");
include ("../inc/header.html.inc.php");

$utente = $_SESSION['Login'];

//inizio html//

?>
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
e dove valorizzi $_SESSION['Login']?
da dove proviene?
se questa è la pagina in cui verifichi il log (almeno così sembra o sbaglio?), dovresti avere prima un form in cui l'utente pinco immette le sue credenziali
riceverle con i loro $_POST, verificare se le credenziali sono in tabella (utente registrato) e a quel punto valorizzare la sessione e accedere promemoria personalizzato


p.s.
abbandona le vecchie istruzioni php mysql_xy deprecate e in via di abbandono e passa alle nuove mysqli_xy
 

miagy

Utente Attivo
2 Nov 2014
71
0
6
La sessione $_SESSION['Login'] viene valorizzata dentro un file include (ho fatto un print di prova e mi viene stampato correttamente il risultato).
Se vuoi posso portarti la pagina, ma in teoria non dovrebbe esserci bisogno dato che, ribadisco, con un print il risultato c'è :S
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
prova così
PHP:
<?php
session_start();
//Personalizzato//
var_dump($_SESSION['login']);//poi lo togli dopo aver visto cosa riporta
if(isset($_SESSION['login'])){
?>
<td align="center" style="background-color: #e6e7e7; color: #618dd6; border: 1px solid #888888; cursor: pointer;" onmouseover="return overlib('&lt;table width=&quot;100%&quot; border=&quot;0&quot; class=&quot;popupDateTable&quot;&gt;&lt;tr&gt;&lt;td align=&quot;center&quot; class=&quot;popupDate&quot;&gt;<?php echo stripslashes($D['title']); ?> ore <?php echo date($D['time']); ?> <?php echo '@' . stripslashes($D['location']); ?>&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;');" onmouseout="return nd();" title="">

<?php   
}else{//Chiudo e Globale
    //quello che ci va nel globale
}
?>
eventualmete posta tutto il codice in particolare dove valorizzi la sessione
 

miagy

Utente Attivo
2 Nov 2014
71
0
6
Allora, con il var_dump il risultato mostra il log correttamente.
Con la tua soluzione, tutte le caselle vengono "attivate" (ovviamente, considerando che si attivano non se $Autore == LOGIN ma se sei loggato e basta).

Per quanto riguarda la valorizzazione, ci sono degli include (vedi codice in #5)

In open2 attivo il db:

PHP:
<? $db = mysql_connect("localhost",$par_DbUser,$par_DbPassword) or die("<b>ERRORE DI ACCESSO AI DATI</B><br>L'errore di solito &egrave; dovuto a problemi di sovraccarico del server, &egrave; temporaneo e sparisce dopo qualche minuto.<br><a href='Javascript:location.reload()'>riprova</a>");
mysql_select_db($par_Conn);
function pars($var) {
    return addslashes($var);
}
?>

In controllo.php

PHP:
<? $Login = $_SESSION['Login'];

if ($Login == '') {
    include("header.html.inc.php");
    echo "<center>Sei stato inattivo troppo a lungo. Rientra.<br><br><a href='inizio.php' target='_top'>esci</a></center>";
    exit();
};
?>

Per quanto riguarda la valorizzazione del dato in events:

PHP:
<?php
/*
   +-------------------------------------+
   + NEW                                 +
   +-------------------------------------+
*/
if ($_GET['sa'] == 'new') {
/*
   +-------------------------------------+
   + NEW                                 +
   +-------------------------------------+
*/
?>
<table width="768" border="0" align=center>
<form name="form1" action="prenota.php?sa=save" method=Post>
  <center>
    Tipo:<br>
    <select name="title" class="ares">
    <option>Impegno Personale</option>
    <option>Impegno Pubblico</option>
    </select>
    <br><br>
    
    Tuo Login:<br>

    <select name="Autore" class="ares">
    <option><?= $utente ?></option>
    </select><br><br>
    Quando:<br>
    <select name="day" class="ares">
                    <option value="1"<?php if (date('j') == '1') { echo ' selected'; } ?>>01</option>
<? //FINO A 31// ?></select>
                <select name="month" class="ares">
                    <option value="1"<?php if (date('n') == '1') { echo ' selected'; } ?>>Gennaio</option><? //FINO A 12// ?>
                </select>
                <select name="year" class="ares">
                    <option value="2017"<?php if (date('Y') == '2017') { echo ' selected'; } ?>>2017</option></select>
                &nbsp; &nbsp;
                -
                &nbsp; &nbsp;
                <input type="text" size=3 name="hour" value="<?php echo date('H'); ?>" class="ares" style="text-align: center;">
                :
                <input type="text" size=3 name="minute" value="<?php echo date('i'); ?>" class="ares" style="text-align: center;">
            
                <br><br>
<input type=submit name=op value='Avanti' class=ares></center>
</form><br><br>
</td></tr></table>

<?php
/*
   +-------------------------------------+
   + SAVE                                +
   +-------------------------------------+
*/
} elseif ($_GET['sa'] == 'save') {
/*
   +-------------------------------------+
   + SAVE                                +
   +-------------------------------------+
*/
?>


<?php
// Variables from Form
$title = trim(addslashes($_POST['title']));
$event = trim(addslashes($_POST['event']));
$Autore = trim($_POST['Autore']);
$day = trim($_POST['day']);
$month = trim($_POST['month']);
$year = trim($_POST['year']);
$hour = trim($_POST['hour']);
$minute = trim($_POST['minute']);
$date = date('U', mktime(0, 0, 0, $month, $day, $year));
$time = $hour.':'.$minute;

// Query
$query = sprintf("INSERT INTO `events` (`event_id`, `title`, `event`, `Autore`, `day`, `month`, `year`, `date`, `time`) VALUES (NULL, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');", $title, $event, $Autore, $day, $month, $year, $date, $time);

// Run it!
$run = mysql_query($query);

}

//ULTIMO HTML//
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
ok, ma allora dovrebbe funzionare con
PHP:
if (($S) and ($Autore == $_SESSION['Login'])) {
a qusto punto un dubbio, verifica $Autore e $s
PHP:
session_start();
var_dump($s);
var_dump($Autore);
var_dump($_SESSION['Login']);//questo mi hai detto che va bene
if (($S) and ($Autore == $_SESSION['Login'])) {//ecc....
 

miagy

Utente Attivo
2 Nov 2014
71
0
6
Questo è il risultato attuale (no, ancora non funziona)

20thybl.png
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
se $s e $Autore sono NUL la parte personalizzata non verra mai eseguita
a parte che non so dove generi quel $s ma per $autore mi sembra che in una pagina derivi da un $_POST, quindi passa anche quello in sessione e analogamente in sessione il valore di $s e prova a correggere quell'if così
PHP:
if (isset($_SESSION['s']) and $_SESSION['Autore'] == $_SESSION['Login']) {
 

miagy

Utente Attivo
2 Nov 2014
71
0
6
Allora, il POST di $Autore è in una pagina chiamata prenota.php ed è l'ultimo codice in #9
Per quanto riguarda $S, valorizzo nella pagina calendario, nello specifico:

PHP:
$tm = date("U", mktime(0, 0, 0, $month, $list_day, $year)) - 86400; // Bir gün önce
        $tn = date("U", mktime(0, 0, 0, $month, $list_day, $year)); // O gün ...
        $tp = date("U", mktime(0, 0, 0, $month, $list_day, $year)) + 86400; // Bir gün sonra
        $Q = sprintf("SELECT * FROM `events` WHERE `Autore` = '$Autore' AND `date` > '%s' AND `date` < '%s' AND `day` = '%s';", $tm, $tp, $list_day);
        $R = mysql_query($Q);
        $D = mysql_fetch_assoc($R);
        $S = mysql_num_rows($R);
        $Y = $D['date'];
        $TheDay = date('d', $Y);
        $TheMon = date('F', $Y);
        $TheYea = date('Y', $Y);
        $time = $D['time'];
        list($hour, $minute) = explode(':', $time);
        mysql_free_result($R);
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
allora sempre ricordando di mettere all'inizio session_start();
nella pagina calendario
PHP:
//....
$R = mysql_query($Q);
$D = mysql_fetch_assoc($R);
$S = mysql_num_rows($R);
if($S>0) $_SESSION['s']=$S;
$Y = $D['date'];
//.....
e nella pagina prenota
PHP:
//.....
$event = trim(addslashes($_POST['event']));
$Autore = trim($_POST['Autore']);
if(!empty($Autore) $_SESSION['autore']=$Autore;
$day = trim($_POST['day']);
//......
con l'ultimo if che ti ho postato "dovrebbe" funzionare.

poi una cosa, attento alle maiuscole/minuscdole, io avevo sbagliato nel var_dump avevo messo $s invece che $S
 

miagy

Utente Attivo
2 Nov 2014
71
0
6
Funziona tutto :)
Ti ringrazio della pazienza.

Ho solo un ultimo bug.
Mi sono accorto che se prenoto un utente personalizzato (e compare nel calendario) scompaiono gli eventi globali, come se non potessero coesistere insieme.
Viceversa, se cancello il promemoria personale, torna l'evento globale.
 

miagy

Utente Attivo
2 Nov 2014
71
0
6
No, rettifico tutto. Sto impazzendo.
Mi sono accorto di un altro bug:

  • Se prenoto una personale, non solo scompaiono quelli globali ma non posso neanche più prenotare i globali. Se esco e riloggo, tuttavia, scompaiono i personali e tornano i globali.
  • Se prenoto globalmente è tutto okay.
 
Discussioni simili
Autore Titolo Forum Risposte Data
I [PHP] login con sessione singola PHP 1
K [PHP] Unica sessione login forum/sito PHP 1
M [PHP] Passare variabile di sessione con metodo GET PHP 10
L [PHP] Suggerimento su sessione PHP 6
Cosina [PHP] Chiudere sessione quando la pagina viene riaggiornata PHP 4
cattivic72 [PHP] Durata sessione PHP 1
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
otto9due [PHP] id di sessione "session_id()" a cosa serve e come utilizzarlo? PHP 4
L [PHP] Sessione tra sottodominio PHP 1
gandalf1959 [PHP] variabile di sessione si azzera ricaricando la pagina? PHP 3
M durata sessione php PHP 1
L Sessione php PHP 6
zighy php sessione per singolo utente PHP 7
U passare una variabile di sessione da pagina di joomla a pagina php Joomla 3
max_400 php: sessione scadenza a tempo e reidirect - by max4001976 PHP 1
H autenticazione sessione ajax/php Ajax 2
L php e ajax, le variaibli di sessione si possono usare? Ajax 0
A array in una sessione php PHP 3
R [PHP] - Variabili di sessione PHP 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 1
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0

Discussioni simili