guarda che tu salvi l'utente in 'userid' non "user" in $_SESSION (almeno da quel che ho capito dalle immagini che hai postato)
guarda che tu salvi l'utente in 'userid' non "user" in $_SESSION (almeno da quel che ho capito dalle immagini che hai postato)
IP-PBX management: http://www.easypbx.it
Old account: 2126 messages
Oldest account: 3559 messages
Sisi, ti chiedo scusa, ma fu un errore di battitura... Ho provato a rischrivere il codice, ma nulla stesso problema non avvia la sessione, ho provato a scriverlo prima in un modo e mi faceva vedere home.php, ma non era in sessione, e se eseguo il login (sia col codice che di adesso) mi rimane sulla pagina login.php e sparisce anche il form di inserimenti dati. Ho il dubbio su 3 possibili errori, secondo la tua esperienza quale sarà:
- Sbaglio il controllo;
- Sbaglio l'avvio sessione;
- Sbaglio la connessione al Database MySQL;
Non so più che fare... Mi sto consultando anche con un libro che ho di sviluppo PHP con MySQL e il sito ufficiale di PHP, ma non trovo l'errore riposto il codice?
Aj Webmaster
DEMO:
login.php:
home.php:Codice PHP:
<?php
session_start();
if(isset($_SESSION['userid']) && $_SESSION['userid'])
{
header('Location: home.php');
exit;
}
$loginError = false;
if(isset($_POST['login']))
{
$username = $_POST['username'];
$password = $_POST['password'];
//autenticazione fake, usare quella che ritieni opportuna
if($username == 'test' && $password == 'test')
{
$_SESSION['userid'] = $username;
header('Location: home.php');
exit;
}else{
$loginError = true;
}
}
?>
<html>
<head><title>Login</title></head>
<body>
<?php if($loginError): ?>
<h3>Username or password invalid</h3>
<?php endif; ?>
<form action="login.php" method="post">
<div>username: <input type="textbox" name="username" /></div>
<div>password: <input type="password" name="password" /></div>
<input type="submit" name="login" />
</form>
</body>
</html>
se li metti in una cartella (e utilizzi php >= 5.4 ), puoi lanciare il comando:Codice PHP:
<?php
session_start();
if(!isset($_SESSION['userid']) || !$_SESSION['userid'])
{
header('Location: login.php');
exit;
}
$username = $_SESSION['userid'];
?>
<html>
<head>
<title>Homepage</title>
</head>
<body>
Hello <?php echo $username; ?>
</body>
</html>
e se nel browser vai in http://localhost:8000/home.php dovresti vedere che funziona correttamentecodice:php -S localhost:8000
IP-PBX management: http://www.easypbx.it
Old account: 2126 messages
Oldest account: 3559 messages
Perfetto, grazie mille, solo due domande per capire e imparare meglio
lo stesso userid del mio esempio o tu lo usi con altro scopo, perchè poi ho visto che usi username, e nel mio esempio userid sareb
1. in $_SESSION hai usato userid, in questo caso sarebbebe username (non so se è ben chiaro)
2. //auntazione fake, usare quella che ritieni opportuna <- subito sotto ci sono le due variabili 'test' sarebbe a a dire che li devo mettere tipo username (o userid) e password, in base a come li ho nominati io nel database?
Grazie di tutto scusa per tante domande, sono alle prime armi con PHP è desidero poterlo capire bene e impararlo alla perfezione mi piace molto questo linguaggio
Aj Webmaster
Aspetta AJB88, il mio non era un codice per dirti "guarda che si fà così con le variabili e tutto il resto", il mio era un esempio che cercava di ricalcare il tuo codice, per farti capire dove andare a fare i controlli. Che cosa fosse il tuo userid, o cosa contenesse, nel tuo codice, non l'ho neanche guardato, ci ho messo il primo valore che ho avuto sottomano nei 5 minuti che ho dedicato a scrivere quel codice.
1) usa $_SESSION come ti pare e mettici dentro quello che vuoi, basta che fai i controlli "logicamente" fatti bene
2) da $_POST ricavi username e password che poi dovrai validare in qualche modo (es: query ad un database). Per farti una demo, ho messo una login statica, cioè che il sistema ti loggava solo se inserivi la combinazione test/test.
Cmq, io prendo le distanze da quello che ho scritto, saranno 3 anni che non scrivevo codice del genere
qualche link:
http://www.bignerdtheory.it/2016/08/...n-php-e-mysql/
http://moodle.isisfacchinetti.it/fil...ssioni-php.pdf
http://www.mrwebmaster.it/php/sessioni_9507.html
http://php.net/manual/en/function.session-start.php
IP-PBX management: http://www.easypbx.it
Old account: 2126 messages
Oldest account: 3559 messages
Sisi, che era un esempio l'avevo capito cercavo di capire se tipo username e userid, sono dei valori impostati da me, in base al form e al database, quindi cosi da capire come calcolare test e test...
Aj Webmaster
immagino che ora abbia capito
IP-PBX management: http://www.easypbx.it
Old account: 2126 messages
Oldest account: 3559 messages
Ah Santino83_02, una domanda su cui ho sempre avuto una curiosità, una volta mi dissero che per il web è sconsigliato usare Database Microsoft Access, ma non mi hanno mai spiegato il motivo, è un problema di compatibilità con PHP o di Sicurezza nella Rete, o qual altro motivo, si sceglie Microsoft SQL o MySQL?
Aj Webmaster
Ho provato il codice e credo di averne capito la logica, praticamente dove tu metti test e test, io dovrei inserire una stringa che si collega al database richiamandomi i dati di accesso che faccio verificare se sono esistenti e:
- Nel caso non esistano faccio un redirect che porta alla pagina di iscrizione,
- Se uno dei due è errato, redirecta alla pagina di login dicendo che uno dei due dati è sbagliato;
- Se esistono mi autentica, facendo un redirect alla pagina desiderata.
quindi nel controllo dopo == anzichè test devo impostare una stringa di connessio al database, giusto?
Aj Webmaster
Santino83_02 Ti ringrazio tantissimo, ne ho capito la logica, son riuscito a prelevare userid dal Database Grazie infinitamente
Solo un altra domanda mentre facevo ricerche nei giorni scorsi ho trovato in un codice un operatore di ? a cosa serve il ? come operatore, cosa gli dice al PHP, tipo ! indica la funzione di negazione NOT, mentre && Indica la funzione logica AND e || indica la funzione di negazione OR, ma ? che funzione svolge nel codice PHP?
Aj Webmaster