Repository 32bit  Forum
Repository 64bit  Wiki

Semplice tutorial PHP

Usate questo forum per proporre nuovi articoli, creare gruppi di lavoro, segnalare problemi, collaborare in genere al progetto Wikislacky.

Moderatore: Staff

Regole del forum
1) Citare l'eventuale nome e link dell'articolo della wiki.
2) Specificare se discussione/suggerimento o richiesta d'aiuto.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Re: Semplice tutorial PHP

Messaggioda bzImage » lun giu 16, 2008 12:25

appena ho tempo studio anche io :oops:
complimenti!
e un saluto a tutti...ma non vi sarò mancato :)
Avatar utente
bzImage
Linux 1.0
Linux 1.0
 
Messaggi: 68
Iscritto il: gio giu 07, 2007 18:05
Slackware: 13

Re: Semplice tutorial PHP

Messaggioda kanzy » lun gen 26, 2009 14:18

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..
Ultima modifica di kanzy il sab gen 31, 2009 17:38, modificato 1 volta in totale.
l'uomo ha bisogno di cibo rifugio e storie
Avatar utente
kanzy
Linux 2.4
Linux 2.4
 
Messaggi: 206
Iscritto il: sab mag 10, 2008 14:02
Località: Godiasco PV
Nome Cognome: Franz Fricker
Slackware: 14.0-x86_64
Kernel: 3.2.29
Desktop: kde

Re: Semplice tutorial PHP

Messaggioda danix » lun gen 26, 2009 18:11

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?? ;)
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: Semplice tutorial PHP

Messaggioda kanzy » mar gen 27, 2009 13:38

@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à.
l'uomo ha bisogno di cibo rifugio e storie
Avatar utente
kanzy
Linux 2.4
Linux 2.4
 
Messaggi: 206
Iscritto il: sab mag 10, 2008 14:02
Località: Godiasco PV
Nome Cognome: Franz Fricker
Slackware: 14.0-x86_64
Kernel: 3.2.29
Desktop: kde

Re: Semplice tutorial PHP

Messaggioda danix » mar gen 27, 2009 13:47

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... ;)
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: Semplice tutorial PHP

Messaggioda kanzy » mar gen 27, 2009 18:51

@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?
l'uomo ha bisogno di cibo rifugio e storie
Avatar utente
kanzy
Linux 2.4
Linux 2.4
 
Messaggi: 206
Iscritto il: sab mag 10, 2008 14:02
Località: Godiasco PV
Nome Cognome: Franz Fricker
Slackware: 14.0-x86_64
Kernel: 3.2.29
Desktop: kde

Re: Semplice tutorial PHP

Messaggioda danix » mer gen 28, 2009 9:02

pomeriggio ti posto un po' di codice così vedi come ho risolto io... ;)
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: Semplice tutorial PHP

Messaggioda aschenaz » sab gen 31, 2009 12:31

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
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4437
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.24
Desktop: KDE 4.10.5

Re: Semplice tutorial PHP

Messaggioda danix » sab gen 31, 2009 17:23

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...

;)
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: Semplice tutorial PHP

Messaggioda kanzy » sab gen 31, 2009 17:53

@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:
l'uomo ha bisogno di cibo rifugio e storie
Avatar utente
kanzy
Linux 2.4
Linux 2.4
 
Messaggi: 206
Iscritto il: sab mag 10, 2008 14:02
Località: Godiasco PV
Nome Cognome: Franz Fricker
Slackware: 14.0-x86_64
Kernel: 3.2.29
Desktop: kde

Re: Semplice tutorial PHP

Messaggioda aschenaz » sab gen 31, 2009 20:53

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
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4437
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.24
Desktop: KDE 4.10.5

Re: Semplice tutorial PHP

Messaggioda kanzy » dom feb 01, 2009 20:59

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:
l'uomo ha bisogno di cibo rifugio e storie
Avatar utente
kanzy
Linux 2.4
Linux 2.4
 
Messaggi: 206
Iscritto il: sab mag 10, 2008 14:02
Località: Godiasco PV
Nome Cognome: Franz Fricker
Slackware: 14.0-x86_64
Kernel: 3.2.29
Desktop: kde

Re: Semplice tutorial PHP

Messaggioda aschenaz » dom feb 01, 2009 21:39

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
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4437
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.24
Desktop: KDE 4.10.5

Re: Semplice tutorial PHP

Messaggioda kanzy » lun feb 02, 2009 14:13

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..
l'uomo ha bisogno di cibo rifugio e storie
Avatar utente
kanzy
Linux 2.4
Linux 2.4
 
Messaggi: 206
Iscritto il: sab mag 10, 2008 14:02
Località: Godiasco PV
Nome Cognome: Franz Fricker
Slackware: 14.0-x86_64
Kernel: 3.2.29
Desktop: kde

Re: Semplice tutorial PHP

Messaggioda kanzy » lun feb 16, 2009 11:11

@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!
l'uomo ha bisogno di cibo rifugio e storie
Avatar utente
kanzy
Linux 2.4
Linux 2.4
 
Messaggi: 206
Iscritto il: sab mag 10, 2008 14:02
Località: Godiasco PV
Nome Cognome: Franz Fricker
Slackware: 14.0-x86_64
Kernel: 3.2.29
Desktop: kde

PrecedenteProssimo

Torna a Wikislacky

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti