- Home
- Categorie
- Coding e Sistemistica
- Coding
- consigli per piccola area riservata
-
consigli per piccola area riservata
Buongiorno a tutti,
ho qualche problema per fare un'area riservata, sono un principiante, sto imparando;
ho scritto così lo script:
file con form per credenziali:
[PHP]
<?php include ("../config.php"); ?>
<html>
<head>
<title><?php
$sql = "SELECT * FROM generali;";
$ret = mysqli_query( $db, $sql );
$row = mysqli_fetch_assoc($ret);
print $row['nome'];
?></title>
<meta name="description" content="<?php print $row['description'];?> ">
<meta name="keywords" content="<?php print $row['keywords'];?>">
<!-- icon fonts -->
<link rel="stylesheet" href="<?php echo $base_url ?>admin/css/font-awesome.min.css" />
<!-- / icon fonts -->
<link rel="stylesheet" href="<?php echo $base_url ?>admin/css/main.css">
</head>
<body><?php
if(isset($_GET['accesso']))
if($_GET['accesso']=="negato")
print "<p id='accesso_negato_login'><i class='fa fa-ban'></i> Accesso negato, reinserire le credenziali</p>";
?><div id="login">
<div>
<i class="fa fa-lock"></i>
<h1>Area Riservata</h1>
</div>
<form action="verifica.php">
<p><i class="fa fa-user"></i> Username</p>
<input type="text" name="username" placeholder="Inserici lo Username">
<p><i class="fa fa-key"></i> Password</p>
<input type="password" name="password" placeholder="Inserisci la Password">
<input type="submit" value="Accedi" id="conferma">
</form></div>
</body>
</html>
[/PHP]file di verifica:
[PHP]
<?php include("../config.php"); ?><?php
$sql = "SELECT * FROM generali";
$ret = mysqli_query( $db, $sql );
while ($row = mysqli_fetch_assoc($ret)){$username_ok = $row['username']; $password_ok = $row['password']; }
?>
<?php
$username = $_GET['username'];
$password = sha1($_GET['password']);
if( $username==$username_ok AND $password==$password_ok )
{
session_start();
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
header('location:../home/home.php');
}
else{header('location:index.php?accesso=negato');}
?>
[/PHP]so che devo farlo con le sessioni e fino a li funziona, però ho diverse pagine nella cartella che vorrei proteggere, e se digito l'url di queste le raggiungo, dovrei fare in modo che riconosca la sessione e se non mi loggo non me le faccia vedere.
spero di essermi spiegato bene
ringrazio in anticipo chi mi aiuteràbuona serata
-
Forse non ho capito bene cosa vuoi fare, ma credo che proteggere pagine (file?) nelle cartelle sia più una questione da risolvere tramite .htaccess che tramite PHP e MySQL.
Se invece intendi non mostrare il risultato di alcuni script tipo:se(loggato){ mostra questo codice HTML; } alrimenti { rimandalo alla index; }
allora la questione è diversa.
Intanto non capisco il SELECT messo nel tag <title> che ti estrarrebbe tutti i record della tabella stampandoti poi solo il primo, qualunque esso sia, nel titolo, nella description e nel keyword. A che pro?
I tuoi SELECT (tutti) mancano della clasola WHERE per limitare la ricerca al solo record che abbia corrispondenza tra user e password.Di modi per sviluppare i codice ce ne sono diversi, ma a grandi linee per farti un esempio di codice di verifica
[PHP]
<?phprequire_once("../config.php");
$username = mysqli_real_escape_string($db, $_POST['username']);
$password = sha1($_POST['password']);
$sql = "SELECT * FROM generali WHERE username='$username' AND password='$password'";
$ret = mysqli_query( $db, $sql );
if(mysqli_num_rows($ret) == 1){
session_start();
$_SESSION['loggato'] = 'ok';
header('location:../home/home.php');
exit;
} else {
header('location:index.php?accesso=negato');
exit;
}
?>
[/PHP]
Ovviamente il FORM dovrà essere coerente con le vaiabili $_POST.
Poi all'inizio delle pagine da proteggere dovrai mettere questo codice
[PHP]
<?php
session_start();
if($_SESSION['loggato'] != 'ok'){
header('Location:index.php?accesso=negato');
exit;
}else{
// codice da eseguire se l'utente è loggato;
}
?>
[/PHP]Ciao.
-
Ciao Oslino e grazie 1000 per la risposta;
so bene che nel mio codice ci sono errori di ogni tipo, però sto studiando da poco il php,
io conosco bene l'html, grazie 1000 per le critiche cmq, sono sempre ben accette e aiutano a crescere.
Provo in questi giorni a seguire il tuo consiglio, ti faccio sapere se ci riesco
grazie 1000 ancora e buona serata