Pagina 2 di 3

Re: Semplice tutorial PHP

Inviato: lun 16 giu 2008, 13:25
da bzImage
appena ho tempo studio anche io :oops:
complimenti!
e un saluto a tutti...ma non vi sarò mancato :)

Re: Semplice tutorial PHP

Inviato: lun 26 gen 2009, 14:18
da kanzy
Grazie mille Nino per questo ottimo tutorial! 8) Me lo sono succhiato durante le feste per trasformare il vecchio sito. E' stato il passo decisivo per prendere di petto (era ora!) il php. Vengo al sodo riferendomi al modello proposto nel tutorial.
Ho creato due nuove directories, diciamo 'famiglia' ed 'amici', protette da htaccess (sono in hosting..). Non trovo il modo per mostrare le pagine protette sulla index. Cioè, se linko normalmente '<a href="amici/file.php"> il login è corretto ma mi mostra la pagina in html crudo (*.css sulla / per index float a 2 colonne..); se aggiungo 'include("amici/$pagina.php");' e linko '<a href="home.php?pagina=file"> il login viene eluso (addio protezione!), ma serve le pagine per bene. Questa settimana mi sono documentato molto sui login, e credo di non aver problemi in questo senso, sia con htaccess che con le sessioni. Il problema è rendere la pagina all'interno della colonna principale con php. :-k Grazie se puoi contribuire a muovermi le meningi..

Re: Semplice tutorial PHP

Inviato: lun 26 gen 2009, 18:11
da danix
kanzy ha scritto:Grazie mille Nino per questo ottimo tutorial! 8) Me lo sono succhiato durante le feste per trasformare il vecchio sito. E' stato il passo decisivo per prendere di petto (era ora!) il php. Vengo al sodo riferendomi al modello proposto nel tutorial.
Ho creato due nuove directories, diciamo 'famiglia' ed 'amici', protette da htaccess (sono in hosting..). Non trovo il modo per mostrare le pagine protette sulla index. Cioè, se linko normalmente '<a href="amici/file.php"> il login è corretto ma mi mostra la pagina in html crudo (*.css sulla / per index float a 2 colonne..); se aggiungo 'include("amici/pagina.php");' e linko '<a href="home.php?pagina=file"> il login viene eluso (addio protezione!), ma serve le pagine per bene. Questa settimana mi sono documentato molto sui login, e credo di non aver problemi in questo senso, sia con htaccess che con le sessioni. Il problema è rendere la pagina all'interno della colonna principale con php. :-k Grazie se puoi contribuire a muovermi le meningi..
io personalmente ci ho capito poco da quello che hai scritto... :D ma probabilmente sono lento io, comunque non puoi postare qualche pezzetto di codice così magari è più facile vedere se e dove sbagli qualcosa?? ;)

Re: Semplice tutorial PHP

Inviato: mar 27 gen 2009, 13:38
da kanzy
@danix

Grazie per il tuo interessamento.
Mi scuso se ti sembra che non sia stato abbastanza chiaro, ma pensavo che l'accenno fosse sufficiente.
kanzy ha scritto:Vengo al sodo riferendomi al modello proposto nel tutorial.
Non c'è codice errato, non c'è proprio perchè non so come fare.
Spiego passo per passo riprendendo dal tutorial.

index.php

<?php
// menu
isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home";
$vocimenu=array("home","bazzecole","quisquilie","pinzillacchere");
foreach($vocimenu as $voce) {
echo '<span style="padding-left: 1.5em;">';
if($pagina!=$voce) echo '<a href="index.php?pagina='.$voce.'">';
echo $voce;
if($pagina!=$voce) echo "</a>";
echo "</span>";
}
echo "\n";
?>
......
<!-- links a pagine protette da .htaccess -->
modo html
<a href="amici/storie.php">Storie</a>
<a href="famiglia/compleanni.php">Compleanni</a>
oppure modo php
<a href="index.php?pagina=storie">Storie</a>
<a href="index.php?pagina=compleanni>Compleanni</a>
......
<!-- colonna principale -->
<div id="main">
<h2><?php echo ucfirst($pagina) ?></h2>
<?php include("pagine/$pagina.php") ?>
</div>

Nel primo caso, il login avviene correttamente, ma ovviamente le pagine mostrate non vengono incluse nella colonna principale della index.
Nel secondo caso, aggiungendo un 'include("amici/$pagina.php");' sulla "main", il login viene saltato, ma le pagine vengono rese correttamente.
Naturalmente vorrei il login attivo e le pagine incluse, quello che si realizza in tutti i siti. E' sicuramente una cosa semplice, ma non la conosco perchè con php ho appena iniziato e non ho trovato un esempio che mi permetta di adattarlo alle mie necessità.

Re: Semplice tutorial PHP

Inviato: mar 27 gen 2009, 13:47
da danix
come avviene l'autenticazione?? tramite sessione?? In questo caso puoi definire un altro array di pagine "protette" e usare un if per verificare che la sessione sia attiva, in tal caso mostri anche i link alle pagine protette, altrimenti non li mostri. Allo stesso modo se qualcuno prova ad accedere ad una pagina protetta senza essersi autenticato puoi redirigerlo su una pagina di errore... ;)

Re: Semplice tutorial PHP

Inviato: mar 27 gen 2009, 18:51
da kanzy
@danix

... che è poi la soluzione sviluppata nel tutorial per gestire l'inserimento dati e le tabelle sul db. Una soluzione elegante ma molto personale, non sempre applicabile in presenza di molti links. All'inizio del tread ho letto che anche tu avevi problemi ad implementare una sessione autenticata... come hai risolto?

Re: Semplice tutorial PHP

Inviato: mer 28 gen 2009, 9:02
da danix
pomeriggio ti posto un po' di codice così vedi come ho risolto io... ;)

Re: Semplice tutorial PHP

Inviato: sab 31 gen 2009, 12:31
da aschenaz
kanzy ha scritto:Grazie mille Nino per questo ottimo tutorial! 8) Me lo sono succhiato durante le feste per trasformare il vecchio sito. E' stato il passo decisivo per prendere di petto (era ora!) il php. Vengo al sodo riferendomi al modello proposto nel tutorial.
Ho creato due nuove directories, diciamo 'famiglia' ed 'amici', protette da htaccess (sono in hosting..). Non trovo il modo per mostrare le pagine protette sulla index. Cioè, se linko normalmente '<a href="amici/file.php"> il login è corretto ma mi mostra la pagina in html crudo (*.css sulla / per index float a 2 colonne..); se aggiungo 'include("amici/pagina.php");' e linko '<a href="home.php?pagina=file"> il login viene eluso (addio protezione!), ma serve le pagine per bene. Questa settimana mi sono documentato molto sui login, e credo di non aver problemi in questo senso, sia con htaccess che con le sessioni. Il problema è rendere la pagina all'interno della colonna principale con php. :-k Grazie se puoi contribuire a muovermi le meningi..
Come diceva Danix neanch'io ci ho capito molto.

Il sistema di accesso autenticato del tutorial non fa riferimento a
htaccess, ma usa semplicemente una tabella di mysql, su cui ci
sono le password cifrate. Poi tutto è lasciato a php, che controlla
se esista la corrispondenza utente-password sul database e
permette l'accesso alle pagine che noi abbiamo stabilito essere
"riservate". In effetti, se le pagine sono tante (come dici tu), basta
inserirle tutte nell'array $pagineriservate.
Nel tutorial è spiegato tutto abbastanza bene:
http://www.slacky.eu/wikislack/index.ph ... utenticato

Ma, ripeto, probabilmente non ho capito bene io il problema... :-k

Re: Semplice tutorial PHP

Inviato: sab 31 gen 2009, 17:23
da danix
stavo riguardando il codice su cui allora avevo problemi, e in effetti non è molto differente da quello del tutorial di Nino, la mia difficoltà allora era semplicemente quella di non aver capito come funzionassero le sessioni e come potevo lavorarci...

In pratica tu dovresti creare un form di login che indirizza i suoi dati sulla pagina che si occupa di gestirli (nel caso del tutorial getdata.php mi pare), in quella pagina php raccoglie i dati passati (usa lo stesso metodo che usi nel form per inviarli, mi raccomando) e li elabora. creando una sessione e attivandola.
Io nella mia sessione memorizzo anche il nome dell'utente per esempio (mi serve in vari punti del sito e in questo modo mi basta splittare la variabile per avere il nome), ma puoi farci davvero ciò che vuoi...

L'unico consiglio che posso darti è di provare a scrivere un po' di codice, attieniti strettamente al tutorial per iniziare e vedrai che capisci tutto, e se non capisci apri un thread e discutiamo di quello che non hai capito, ma senza una base è difficile aiutarti...

;)

Re: Semplice tutorial PHP

Inviato: sab 31 gen 2009, 17:53
da kanzy
@danix

Grazie per esserti preso la briga di andare a guardare, ma evidentemente non sono stato abbastanza chiaro perchè non ho problemi con il codice del tutorial. Adesso rispiego.. #-o

@aschenaz

Il tutorial - ripeto ottimo - l'ho capito e funge ok.
Passiamo oltre.

1. Sul modello del tutorial, ho creato una 'index.php' dove, tramite un menu simile, includo le pagine pubbliche presenti nella directory 'pagine'. Tutto uguale.
2. Ho creato due nuove directories, ognuna protetta con password diversa, 'amici' e 'famiglia' con molti files.
3. Non desidero utilizzare il metodo delle voci a s/comparsa per l'autenticazione, perchè i links sono in box differenti e in contesti diversi sulla colonna destra della 'index.php', e non saprei come renderli: dunque path tradizionali.
4. L'host ha inserito nelle directories gli .htaccess, con l'avvertenza di non modificarli.
5. Ho creato comunque un form per il login (includendo la funzione 'reindirizza' ed utilizzando la sezione LOGIN di 'raccoltadati.php'); un file 'check.php', da includere all'inizio dei files da proteggere, per chiamare il login e per evitare i soliti furbetti; ed un db per user/pass. Tutto ok.

Siamo arrivati al punto in cui la pagina scelta viene servita al browser.

a) Se ho aggiunto 'include("amici/$pagine.php")', le pagine vengono rese correttamente all'interno della 'index.php', ma sono visibili a tutti!, cioè possono essere richiamate direttamente rendendo assolutamente inutile il login;

b) Se non ho aggiunto 'include()', tutta la procedura di login avviene correttamente, ma la pagina viene resa in una nuova finestra fuori dalla index (naturalmente in questa modalità ho sostituito la query-strings con il path sia in chiamata, sia nella funzione 'reindirizza', che nella funzione header);

che fare per ottenere la pagina inclusa all'interno della index + una corretta protezione?..

Spero questa volta di essermi spiegato chiaramente.. :roll:

Re: Semplice tutorial PHP

Inviato: sab 31 gen 2009, 20:53
da aschenaz
Credo che succeda perché, con quell''include("amici/$pagine.php")' diretto,
tu scavalchi ogni controllo... Ma il valore della variabile $pagine come viene
assegnato? Con una query-string passata dal browser? Dovresti porre una
condizione a monte dell'include, per dirottare al login se il valore di $pagine
è compreso tra quelle riservate. Ma, di fatto, è la stessa cosa del tutorial...

Se non posti una bella porzione di codice è difficile capire... :-k

Re: Semplice tutorial PHP

Inviato: dom 1 feb 2009, 20:59
da kanzy
Capito. \:D/
Modificando i relativi riferimenti sulla index ho risolto così:

<div id="main"><?php
include("pages/$page.php");
if(in_array($riservate) || isset($_SESSION["autorizza"])) {
include("amici/$page.php");
header("Location: index.php");
}
?></div>

Grazie. =D>

La mia difficoltà, per ora, non sono i tutorials o i manuali, ma calarmi nella mentalità da coder per applicarli. :roll:

Re: Semplice tutorial PHP

Inviato: dom 1 feb 2009, 21:39
da aschenaz
kanzy ha scritto:Capito. \:D/
Modificando i relativi riferimenti sulla index ho risolto così:

<div id="main"><?php
include("pages/$page.php");
if(in_array($riservate) || isset($_SESSION["autorizza"])) {
include("amici/$page.php");
header("Location: index.php");
}
?></div>

Grazie. =D>

La mia difficoltà, per ora, non sono i tutorials o i manuali, ma calarmi nella mentalità da coder per applicarli. :roll:
Si, ma c'è qualcosa che non va nel tuo codice:
innanzitutto deve essere in_array($page,$riservate).
Poi vai a porre due condizioni opposte (la pagina è riservata oppure esiste la
sessione di autorizzazione); infine come risultato includi la pagina e poi
redirigi... :-k

Re: Semplice tutorial PHP

Inviato: lun 2 feb 2009, 14:13
da kanzy
aaargh!.. #-o in più sono venuti a galla altri problemi.. :oops: in settimana proverò con calma a rivedere il tutto. Per adesso grazie della tua disponibilità, sempre generosa..

Re: Semplice tutorial PHP

Inviato: lun 16 feb 2009, 11:11
da kanzy
@aschenaz

Ho rifatto tutto da capo per cercare di cucirlo su misura. Credo di aver imparato molto in queste 2 settimane, ma una l'ho persa solo per un ? e un = . Nel file funzioni.php del tutorial ho aggiunto un ? alla location per riuscire a farlo girare.. è giusto?..

<?php
function reindirizza($paginainterna=0) {
$location="Location: ../index.php?";
if($paginainterna) $location.="$paginainterna";
header($location);
exit;
}
?>

Non c'è un debugger per il PHP?..
Una di queste sere ti posto una sintesi del codice, così - please! - quando hai tempo gli dai un occhio: è il mio primo pezzo di codice php!