Ho appena finito di creare un intero login e registrare systsem in PHP, ma il mio problema è che non ho ancora utilizzato alcuna sessione. Sono una specie di principiante in PHP e non ho mai usato sessioni prima. Quello che voglio fare è, dopo che l'utente registra e compila il modulo di login, rimarranno comunque sulla stessa pagina. Quindi, ci sarà una parte di ciò che sarà se la sessione è loggata e l'altra parte sarà un'altra (l'utente non ha effettuato l'accesso in modo da visualizzare il modulo di login). Qualcuno può dirmi come iniziare?Utilizzo di sessioni e variabili di sessione in uno script di accesso PHP
risposta
Spero che questo aiuti :)
inizia la sessione, è necessario dire questo nella parte superiore di una pagina o prima di chiamare codice di sessione
session_start();
mettere un ID utente nella sessione per tenere traccia che viene registrato nel
$_SESSION['user'] = $user_id;
Verificare se qualcuno è loggato
if (isset($_SESSION['user'])) {
// logged in
} else {
// not logged in
}
Trova il login ID utente
$_SESSION['user']
Quindi sulla tua pagina
<?php
session_start();
if (isset($_SESSION['user'])) {
?>
logged in HTML and code here
<?php
} else {
?>
Not logged in HTML and code here
<?php
}
codice buono, semplice e leggibile. Semplicemente perfetto – IchHabsDrauf
In primo luogo, la documentazione di PHP ha qualche excellent information su sessions.
In secondo luogo, è necessario un modo per memorizzare le credenziali per ogni utente del tuo sito web (ad esempio un database). È una buona idea non archiviare le password come testo normale non leggibile, non crittografato. Quando si memorizzano le password, è necessario utilizzare la funzione di hashing di PHP crypt()
. Ciò significa che se tutte le credenziali sono compromesse, le password non sono pronte per il.
maggior parte dei sistemi di log-in saranno hash/cripta la password di un utente immette poi confrontare il risultato con l'hash nel sistema di storage (ad esempio database) per il corrispondente nome utente. Se l'hash della password inserita corrisponde all'hash memorizzato, l'utente ha inserito la password corretta.
È possibile utilizzare le variabili di sessione per archiviare informazioni sullo stato corrente dell'utente, ovvero se hanno effettuato l'accesso o meno e, se lo sono, è possibile anche memorizzare l'ID utente univoco o qualsiasi altra informazione necessaria immediatamente.
per avviare una sessione di PHP, è necessario chiamare session_start()
. Allo stesso modo, per distruggere una sessione ei suoi dati, è necessario chiamare session_destroy()
(ad esempio, quando l'utente si disconnette):
// Begin the session
session_start();
// Use session variables
$_SESSION['userid'] = $userid;
// E.g. find if the user is logged in
if($_SESSION['userid']) {
// Logged in
}
else {
// Not logged in
}
// Destroy the session
if($log_out)
session_destroy();
Auspico inoltre che si dà un'occhiata a this. Ci sono alcune informazioni buone e facili da seguire sulla creazione di un semplice sistema di accesso.
PHP 5.5 ha introdotto [funzioni di hashing della password] (http://php.net/manual/en/ref.password.php) (con codice di compatibilità 5.3.7 disponibile) che dovrebbe essere usato per la generazione e la convalida dell'hash della password. Queste funzioni eliminano gli errori che indeboliscono la sicurezza che alcuni programmatori potrebbero fare quando usano 'crypt()' o altre funzioni di hashing generali di PHP. Per i dettagli sul perché usare password_hash() invece di crypt(), vedi [rfc: password_hash] (https://wiki.php.net/rfc/password_hash) –
Il link in fondo alla tua risposta (questo) è rotto adesso. Puoi fornire un permalink per questa risorsa? – dmcgill50
Faccio sempre OOP e uso questa classe per mantenere la sessione in modo da poter utilizzare la funzione is_logged_in per verificare se l'utente è connesso o meno, e se non lo si fa come si desidera.
<?php
class Session
{
private $logged_in=false;
public $user_id;
function __construct() {
session_start();
$this->check_login();
if($this->logged_in) {
// actions to take right away if user is logged in
} else {
// actions to take right away if user is not logged in
}
}
public function is_logged_in() {
return $this->logged_in;
}
public function login($user) {
// database should find user based on username/password
if($user){
$this->user_id = $_SESSION['user_id'] = $user->id;
$this->logged_in = true;
}
}
public function logout() {
unset($_SESSION['user_id']);
unset($this->user_id);
$this->logged_in = false;
}
private function check_login() {
if(isset($_SESSION['user_id'])) {
$this->user_id = $_SESSION['user_id'];
$this->logged_in = true;
} else {
unset($this->user_id);
$this->logged_in = false;
}
}
}
$session = new Session();
?>
Grazie, è un buon punto di partenza, ma dovresti espandere la tua classe per l'autenticazione utente con e-mail;) –
questo è il codice di sessione più semplice che utilizza php. Stiamo usando 3 file.
login.php
<?php session_start(); ?> // session starts with the help of this function
<?php
if(isset($_SESSION['use'])) // Checking whether the session is already there or not if
// true then header redirect it to the home page directly
{
header("Location:home.php");
}
if(isset($_POST['login'])) // it checks whether the user clicked login button or not
{
$user = $_POST['user'];
$pass = $_POST['pass'];
if($user == "Ank" && $pass == "1234") // username is set to "Ank" and Password
{ // is 1234 by default
$_SESSION['use']=$user;
echo '<script type="text/javascript"> window.open("home.php","_self");</script>'; // On Successful Login redirects to home.php
}
else
{
echo "invalid UserName or Password";
}
}
?>
<html>
<head>
<title> Login Page </title>
</head>
<body>
<form action="" method="post">
<table width="200" border="0">
<tr>
<td> UserName</td>
<td> <input type="text" name="user" > </td>
</tr>
<tr>
<td> PassWord </td>
<td><input type="password" name="pass"></td>
</tr>
<tr>
<td> <input type="submit" name="login" value="LOGIN"></td>
<td></td>
</tr>
</table>
</form>
</body>
</html>
home.php
<?php session_start(); ?>
<html>
<head>
<title> Home </title>
</head>
<body>
<?php
if(!isset($_SESSION['use'])) // If session is not set then redirect to Login Page
{
header("Location:Login.php");
}
echo $_SESSION['use'];
echo "Login Success";
echo "<a href='logout.php'> Logout</a> ";
?>
</body>
</html>
logout.php
<?php
session_start();
echo "Logout Successfully ";
session_destroy(); // function that Destroys Session
header("Location: Login.php");
?>
//start use session
$session_start();
extract($_POST);
//extract data from submit post
if(isset($submit))
{
if($user=="user" && $pass=="pass")
{
$_SESSION['user']= $user;
//if correct password and name store in session
}
else {
echo "Invalid user and password";
header("Locatin:form.php");
}
if(isset($_SESSION['user']))
{
//your home page code here
exit;
}
BTW, dovresti fare hash e salare la password su questo. Quindi hash e salate l'input per il confronto. –
è necessario iniziare la sessione nella parte superiore di una pagina o prima di chiamare codice di sessione
session_start();
$session_start();
extract($_POST);
//extract data from submit post
if(isset($submit))
{
if($user=="user" && $pass=="pass")
{
$_SESSION['user']= $user;
//if correct password and name store in session
}
else {
echo "Invalid user and password";
header("Locatin:form.php");
}
if(isset($_SESSION['user']))
{
//your home page code here
exit;
}
- 1. Accesso a variabili globali in uno script PHP separato?
- 2. variabili Accesso Asp.Net di sessione in JS
- 3. Creazione e distruzione sicura delle sessioni di accesso in PHP
- 4. Utilizzo di ZeroMQ in uno script PHP all'interno di Apache
- 5. Riferimento alle variabili di sessione in PHP
- 6. Quanto sono sicure le variabili di sessione PHP?
- 7. Scrittura di uno script per chiudere la sessione sullo schermo
- 8. Utilizzo di $ variabili in preg_replace in PHP
- 9. cleanup file di sessione php
- 10. Variabili di sessione PHP non conservate
- 11. Utilizzo di sessioni PHP con la mia applicazione Android per accedere
- 12. Utilizzo di ARGV e CGI in uno script Perl
- 13. Esecuzione di script Python con variabili PHP
- 14. Recupera variabili di sessione in ASP.NET MVC 4 (rasoio, vista)
- 15. Accesso alle variabili di sessione al di fuori del servlet
- 16. Esecuzione di più script/sessioni R
- 17. iframe Facebook non funziona in IE; problema di sessione/accesso?
- 18. use_strict_mode in sessioni php
- 19. Variabili di ambiente globali in uno script di shell
- 20. Variabili sessione PHP - scompaiono e riappaiono
- 21. Sessioni CodeIgniter vs sessioni PHP
- 22. Autenticazione e sessioni API PHP
- 23. PHP/SESSIONE: accedi uno per utente?
- 24. PHP esegue uno script quando scade una sessione
- 25. Cookie di accesso/sessione, Ajax e sicurezza
- 26. Sessione di dirottamento e PHP
- 27. esecuzione di uno script Python da PHP
- 28. Utilizzo di R con Apache e PHP
- 29. COME eseguire il test delle variabili di sessione in PHP?
- 30. Qual è la differenza tra le variabili di sessione e le variabili globali in php?
"Se si può immaginare un intero libro che risponde alla tua domanda, si sta chiedendo troppo. " - [Domande frequenti StackOverflow] (http://stackoverflow.com/faq) Per chiarire, la tua domanda è troppo ampia. – orourkek
Nulla che non sia mai accaduto prima. Controlla [documentazione della sessione di php.net] (http://www.php.net/manual/en/book.session.php), questo è un ottimo punto di partenza:] – orourkek
Guarda anche questo http: // www. phpro.org/tutorials/Introduction-To-PHP-Sessions.html –