- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Tutorial] Area privata
-
Ciao arkom,
In questo tutorial le news non sono molto inerenti, per farle puoi aganciarti a questo tutorial:
http://www.giorgiotave.it/forum/scripting-e-risorse-utili/103960-script-news-con-utilizzo-di-un-database-mysql.html
TI basta inserire l'inserimento in pagina private di questo tutorial.
-
Ah peccato. Avrei preferito seguire un tutorial da parte tua; in quanto sei grande e di facile comprensione: Spiegato molto bene !!!
Comunque vedo se ci capisco qualcosa.
Ti faccio sapere
Comunque stai prevedendo altri tutoriali interessanti?
-
@Thedarkita said:
Hai controllato come ti ho detto che invece di incollare a partire dalla prima riga del file hai incollato a partire dalla seconda riga del file?
Ti chiedo scusa Theda, ma i codici che ho incollati li ho incollati come tu li hai messi, il bello che prima mi funzionava ora no...:? o forse non ho capito cosa vuoi dirmi?
Nei codici che ho postato prima c'è qualcosa che non và?Grazie e abbi pazienza...:(
-
Prova a scaricare i file dal link nel primo post e prova quelli...
Per me parti dalla seconda riga del file e mandi un output prima, altrimenti l'errore lo dava ovunque...
-
Mi dà warning anche quando clicco su registrazione (mi sembrava di no, mi sono confuso) ma mi dà il warning...quindi mi registra mi logga ma ho sempre il warning di mezzo...
I file in prima pagina li ho controllati e sono identici a quelli miei...
-
Scaricali i file iniziali da qua.
E prova mettendo questi :).
-
Perfetto, ora torna. Un problema però...e te pareva...
Io vorrei che quando mi loggo la scritta PAGINA PRIVATA! esca linkata e l'ho fatto in modo giusto...ma allora perchè mi esce questo errore?
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\programmi\easyphp1-8\www\privata.php:1) in c:\programmi\easyphp1-8\www\config.php on line 3
Privata.php
<?php
// Includo la connessione al database
require('config.php');
// Se non è stata definita la variabile manda l'utente alla homepage
if(!isset($_SESSION['login']))
{
header('Location: index.php');
exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ".og/TR/.d">
<html xmlns="tp.w3.">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Area privata</title>
</head>
<body>
<a href="">Pagina privata!</a><br />
<br />
<br />
<a href="logout.php">Logout</a><br />
</body>
</html>
-
Il problema è che tu incolli a partire dalla riga 2, e non dalla prima riga del file.
il file tuoi sono cosi:
[php]
Riga 1:
Riga 2: <?php
Riga 3: session_start();
[/php]
mentre dovrebbero essere cosi:
[php]
Riga 1: <?php
Riga 2: session_start();
[/php]
-
Ma allora perchè prima di scrivere l' <a href> va tutto bene? eppure io scrivo solo quello...sicuramente sbaglio io...e cosa dovrei fare? ho anche riscaricato i file da te senza toccare nulla, solo scritto a href.
Grazie!
-
Il login è a cookie?
-
Ciao The Darkita ho seguito tutto come hai descritto in precedenza
Se prima vedevo il nome dell'utente che aveva effettuato il login adesso per non so quale motivo non va più e mi da un errore del genere[HTML]
[CENTER]Salve
Notice: Undefined index: user in C:\Programmi\EasyPHP 3.0\www\privata.php on line 551
[/CENTER]
[/HTML]il codice è questo[PHP]<?php
// Includo la connessione al database
require('config.php');// Se il modulo viene inviato...
if(isset($_POST['login']))
{// Dati Inviati dal modulo $user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default '' $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default '' // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza if (!get_magic_quotes_gpc()) { $user = addslashes($user); $pass = addslashes($pass); } // Crypto la password e la confronto con quella nel database $pass = md5($pass); // Controllo l'utente esiste $query = mysql_query("SELECT id FROM utenti WHERE user = '$user' AND pass = '$pass' LIMIT 1"); // Se ha trovato un record if(mysql_num_rows($query) == 1) { // prelevo l'id dal database $login = mysql_fetch_array($query); // Creo una variabile di sessione $_SESSION['login'] = $login['id']; $_SESSION['user'] = $user; // reindirizzo l'utente header('Location: privata.php'); exit; } // se non esiste da l'errore else header('Location: error_login.php');
}
// Se non è stata definita la variabile manda l'utente alla homepage
if(!isset($_SESSION['login']))
{
header('Location: utente_non_registrato.php');
exit;
}
?>
[/PHP]e tra il tags body il codice è questo lo script incriminato alla riga 551:
[PHP]<div id="Fieldset_b">
<fieldset>
<legend class="Stile26">Area Privata Utenti Registrati</legend>
<p align="center" class="Stile2">Salve<?php echo $_SESSION['user']; ?></p>
<p align="center" class="Stile2">In questa pagina puoi Uploadare i tuoi files o scrivere sul Guestbook.</p>
<p align="center" class="Stile2">Usa le sezioni del tuo interesse nel riquadro in basso.</p>
<p align="center" class="Stile2"> </p>
<p align="center" class="Stile2"> </p>
</fieldset>
</div>[/PHP]
-
Il login è con le sessioni.
Dopo gli header location metti exit;
Dovresti modificare questo:
[php]
else
header('Location: error_login.php');
[/php]
in questo:
[php]
else
{
header('Location: error_login.php');
exit;
}
[/php]Altrimenti viene si mandato l'header al browser, ma vengono inviati anche output se ci sono successivamente, e in alcuni browser(Internet Explorer) può non avvenire il redirect.
Nel file privata.php hai messo l'include del config.php?
-
Ok funziona nuovamente grazie TheDarkita.
Tutto rimesso a posto compreso l'exit dopo gli headers
Ah volevo dirti ho seguito come nel tuo tutorial:
[PHP]require('config.php');[/PHP]
per la connessione al DB
e non
[PHP]include('config.php');[/PHP]
come hai menzionato
e và come un treno, (finchè non combino qualche ca..no )Curiosità della serata:
che differenza cìè tra include e require?
Tieni conto che l'inglese (almeno quello) lo capisco alla perfezione, ma nel php che funzioni hanno l'uno dall' altro?
e come si utilizzano e in quale corcostanza?
Anticipate Thank (ossia grazie anticipatamente).
-
La differenza è che se usi require lui include il file come il normale include, però se non lo trova termina l'esecuzione dello script.
Utilizzando l'include invece se non trova il file ti viene mostrato un errore ma lo script continua la propria esecuzione.Se mancando il file possono succedere effetti indesiderati si utilizza il require, ad esempio in questo caso se manca il file e utilizzi include le sessioni non funzionano ciò porta ad effetti indesiderati.
-
a me manda la mail per il cambio della password con il link resetta password ma quando ci clicco si ferma a questo punto:
Link non valido, i motivi potrebbero essere i seguenti:
- Hai già modificato la tua password
- Hai seguito un link errato
do un occhiato sul Database ed effettivamente registra bn il code dove sto tralasciando il particolare?
grazie e a presto!
-
Ciao BlueDragon89,
Dovresti controllare che il link in cui vai sia corretto...
-
ma piu' che altro non capisco come fa lui a capire che mi sto spostando su un'altro database?
-
Che significa ti stai spostando su un altro database?
-
si in effetti non ho capito perche' ho fatto le varie tabelle su database diversi...niente lo copio dall'altra parte e vedo se va..
-
Le tabelle devi farle tutte sullo stesso database ovviamente...
Fammi sapere se hai problemi.