[PHP5] Attivare la sintassi breve per le variabili GET

Discuti dei problemi relativi alla programmazione nel tuo linguaggio preferito!

Moderatori: cb_123, thrantir, tonertemplum

[PHP5] Attivare la sintassi breve per le variabili GET

Messaggiodi dannyb78 il 20 nov 2007, 10:52

Scusate la domanda, che forse sarà banale, ma essendo TOTALMENTE ignorante in fatto di costruzione di pagine web mi sto picchiando da ieri sera con una funzione require che non riesco a far andare.

in pratica vorrei scrivere in una pagina qualcosa tipo

<?php require('pagina1.php?var1=a&var2=b'); ?>

che mi include la pagina pagina1.php elaborandola con i valori di var1 e var2 che gli passo. Solo che senza parametri funziona (ovviamente riporta i valori che ho impostato per var1 e var2 = "", ma questo conferma il buon funzionamento del codice), invece mettendo i parametri ?var1=a&var2=b dà errore e ovviamente esce, trattandosi di un require.

Dove sbaglio?

[edit]

il problema non era nella sintassi, ma nel fatto che non era attiva la sintassi breve per le variabili GET. vedi più avanti per ulteriori info
Ultima modifica di dannyb78 su 29 nov 2007, 16:40, modificato 1 volte in totale.
CM Cosmos S | CM Pro Real Power 1000W | ASUS P6T6 WS Revolution | intel i7 965 extreme | CM V8 | Corsair DHX 1600C8 6*2GB | ASUS EAH4870X2 | Creative X-Fi Titanium Fatal1ty Champion Series | WD Velociraptor 300 +Seagate 1,5TB | ASUS Bluray BC-08B1ST | NZXT Sentry LX | Panasonic TH-D42PT84

MTB CLUB CECINA - XII GRANFONDO COSTA DEGLI ETRUSCHI - Marina di Bibbona ||| Foto edizione 2009!!!
Avatar utente
dannyb78
Luce delle stelle
Luce delle stelle
 
Messaggi: 2648
Iscritto il: 26 giu 2005, 16:33
Località: Cecina

 

Re: [PHP] trasferire parametri tramite "require"

Messaggiodi thrantir il 20 nov 2007, 12:30

ma com'è fatta dentro quella pagina? puoi postarci il codice? in che punto ti da errore?
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Re: [PHP] trasferire parametri tramite "require"

Messaggiodi dannyb78 il 20 nov 2007, 12:54

thrantir ha scritto:ma com'è fatta dentro quella pagina? puoi postarci il codice? in che punto ti da errore?


Ok. Questa funzione vorrei usarla per caricare parte dell'header del sito. Mi serve per poter cambiare con facilità i titolo a tutte la pagine, le keywords per i motori di ricerca, e altro.

Questo è il file auxpages/header.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<meta name="keywords" content="Mountain-bike Club MOUNTAIN BIKE mountain bike Cecina ciclismo itinerari ciclistici biciclette bicicletta Costa degli Etruschi squadra nazionale collegiale marina di Bibbona foto gran fondo Emicicli biker bikers associazione ciclistica CECINA ciclisti circuito italiano provincia di Livorno toscana TOSCANA granfondo COSTA DEGLI ETRUSCHI fuoristrada Federazione Ciclistica Italiana corsi corso maestro campionato bike-trial escursioni guidate escursione guidata serata enogastronomica spinning marathon granfondina Camping Le Esperidi cinema bambini spettacolo acrobatico BIKE TRIAL gara gare news tour gatorade Mic-shimano Challenge Coppa Toscana MTB percorso percorsi Challenge Tosco/Lombardo newsletter manifestazione manifestazioni Piombino Elba Gorgona Pianosa Montecristo Capraia Rosignano Marittimo Solvay Bibbona Campiglia Marittima Baratti Populonia Bolgheri Castagneto Carducci Suvereto Sassetta Parco Monti Livornesi Macchia Magona Oasi Faunistica Bolgheri Parco Rimigliano San Vincenzo Strada del Vino turismo outsider Maremma natura Cecina Mare gruppo sportivo">

<title><?
if ($id=="gf")
{echo "MTB Club Cecina: Undicesima edizione Granfondo Costa degli Etruschi";}
else { if ($id=="club")
{echo "MTB Club Cecina: Sport &amp; divertimento";}
else {echo "MTB Club Cecina";}
}
echo "$testo";
?></title>

<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>

<script type="text/javascript">

_uacct = "UA-1199859-1";

urchinTracker();

</script>


Questo invece è l'inizio di una pagina qualsiasi (in questo caso index.php)

<?php require('auxpages/header.php'); ?>

<link href="\css\style1.css" rel="STYLESHEET" type="text/css">

......

</head>

...


prima importo la parte di codice comune a tutte le pagine, poi lascio spazio ad eventuali altre righe di codice proprie della pagina. Così come è scritto funziona. Ovviamente il titolo sarà "MTB Club Cecina".

Se sostituisco con
<?php require('auxpages/header.php?id=gf&testo=home'); ?>

ottengo questo errore:
Warning: require(auxpages/header.php?id=gf&testo=home) [function.require]: failed to open stream: No such file or directory in /var/www/mtb-cecina/index.php on line 1
Fatal error: require() [function.require]: Failed opening required 'auxpages/header.php?id=gf&testo=home' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/mtb-cecina/index.php on line 1
CM Cosmos S | CM Pro Real Power 1000W | ASUS P6T6 WS Revolution | intel i7 965 extreme | CM V8 | Corsair DHX 1600C8 6*2GB | ASUS EAH4870X2 | Creative X-Fi Titanium Fatal1ty Champion Series | WD Velociraptor 300 +Seagate 1,5TB | ASUS Bluray BC-08B1ST | NZXT Sentry LX | Panasonic TH-D42PT84

MTB CLUB CECINA - XII GRANFONDO COSTA DEGLI ETRUSCHI - Marina di Bibbona ||| Foto edizione 2009!!!
Avatar utente
dannyb78
Luce delle stelle
Luce delle stelle
 
Messaggi: 2648
Iscritto il: 26 giu 2005, 16:33
Località: Cecina

Re: [PHP] trasferire parametri tramite "require"

Messaggiodi thrantir il 20 nov 2007, 14:48

immagino che il problema stia nel fatto che non puoi includere una pagina con require passando valori per get o post... a parte che non li potresti usare come fai tu, ma li dovresti prendere esplicitamente dall'array dei parametri di get. Sicuramente se definisci quelle variabili prima di fare la require dovrebbe funzionare, in paratica fai

[code]
<?php
$id = "gf";
$test = "home";
require('auxpages/header.php');
?>
[code]

così il file php incluso dovrebbe "ereditare" le due variabili definite precedentemente
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Re: [PHP] trasferire parametri tramite "require"

Messaggiodi thrantir il 20 nov 2007, 14:49

un altro modo potrebbe essere definire una funzione nel file ausiliario e chiamarla coi parametri che vuoi passare, questo forse sarebbe più pulito come stile di programmazione
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Re: [PHP] trasferire parametri tramite "require"

Messaggiodi dannyb78 il 20 nov 2007, 14:59

thrantir ha scritto:un altro modo potrebbe essere definire una funzione nel file ausiliario e chiamarla coi parametri che vuoi passare, questo forse sarebbe più pulito come stile di programmazione


non sono proprio a digiuno di programmazione, ma le mie reminescenze di strutture dati in c++ mi aiutano solo a livello teorico e non molto nemmeno in quello. non ho mai avuto modo di sturiare html, css, php nè altro, semplicemente mi trovo a risistemare il lavoro di altri in un linguaggio per me misterioso. Cerco di andare avanti con quello che trovo con google e su html.it, oltre a guardare le pagine già esistenti.
Questo per dire che l'idea di un sistema più pulito mi attira, ma non ho assolutamente idea di come tradurre in codice quello che hai detto. Se è una cosa relativamente semplice e potessi farmi un esempio te ne sarei grato, altrimenti uso la prima sintassi suggerita che funziona perfettamente.

Grazie thra!
CM Cosmos S | CM Pro Real Power 1000W | ASUS P6T6 WS Revolution | intel i7 965 extreme | CM V8 | Corsair DHX 1600C8 6*2GB | ASUS EAH4870X2 | Creative X-Fi Titanium Fatal1ty Champion Series | WD Velociraptor 300 +Seagate 1,5TB | ASUS Bluray BC-08B1ST | NZXT Sentry LX | Panasonic TH-D42PT84

MTB CLUB CECINA - XII GRANFONDO COSTA DEGLI ETRUSCHI - Marina di Bibbona ||| Foto edizione 2009!!!
Avatar utente
dannyb78
Luce delle stelle
Luce delle stelle
 
Messaggi: 2648
Iscritto il: 26 giu 2005, 16:33
Località: Cecina

Re: [PHP] trasferire parametri tramite "require"

Messaggiodi thrantir il 20 nov 2007, 15:43

quello che volevo dire era che, siccome devi in qualche modo fare qualcosa di parametrico, potresti avere, nel file che includi, una funzione del tipo

Codice: Seleziona tutto
function pippo($id, $testo) {
    ...
}


e, invece che passare i parametri al momento dell'inclusione, cosa che sembra non si possa fare, fai l'inclusione e richiami subito la funzione

<?php
require('auxpages/header.php');
pippo("gf", "home");
?>

anche il modo che ti ho detto prima, comunque, dovrebbe funzionare, e ti permette di non modificare il resto del codice
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Re: [PHP] trasferire parametri tramite "require"

Messaggiodi dannyb78 il 21 nov 2007, 13:18

Ok, ho capito, ti ringrazio. Faccio qualche prova, se non altro per cultura personale. alla prox!
CM Cosmos S | CM Pro Real Power 1000W | ASUS P6T6 WS Revolution | intel i7 965 extreme | CM V8 | Corsair DHX 1600C8 6*2GB | ASUS EAH4870X2 | Creative X-Fi Titanium Fatal1ty Champion Series | WD Velociraptor 300 +Seagate 1,5TB | ASUS Bluray BC-08B1ST | NZXT Sentry LX | Panasonic TH-D42PT84

MTB CLUB CECINA - XII GRANFONDO COSTA DEGLI ETRUSCHI - Marina di Bibbona ||| Foto edizione 2009!!!
Avatar utente
dannyb78
Luce delle stelle
Luce delle stelle
 
Messaggi: 2648
Iscritto il: 26 giu 2005, 16:33
Località: Cecina

Re: [PHP] trasferire parametri tramite "require"

Messaggiodi thrantir il 22 nov 2007, 13:58

de nada :-)
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Re: [PHP] trasferire parametri tramite "require"

Messaggiodi dannyb78 il 24 nov 2007, 00:28

Credo di aver capito perchè non andava inizialmente. Ricercando su manuali e howto il metodo da me inizialmente usato per passare le variabili è corretto. Mi sa che per poter passare i parametri occorre prima configurare correttamente php e/o apache, perchè lo stesso problema lo ho anche con un altra pagina, che sul server che ospita il sito funziona, mentre sul mio server "domestico" per i test non va...

Guardate questo esempio. Passo la variabile pagina ad un file che prima ne stampa il valore poi esegue un require. Il require fallisce, ma prima ancora si nota che la variabile non ha assunto il valore.

Immagine

Qualche idea?

edit - per curiosità ho caricato sul server remoto il primo condice che ho postato (quello con sintassi <?php require('pagina1.php?var1=a&var2=b'); ?>)... FUNZIONA! Evidentemente è un problema di configurazione del server di prova ](*,)
CM Cosmos S | CM Pro Real Power 1000W | ASUS P6T6 WS Revolution | intel i7 965 extreme | CM V8 | Corsair DHX 1600C8 6*2GB | ASUS EAH4870X2 | Creative X-Fi Titanium Fatal1ty Champion Series | WD Velociraptor 300 +Seagate 1,5TB | ASUS Bluray BC-08B1ST | NZXT Sentry LX | Panasonic TH-D42PT84

MTB CLUB CECINA - XII GRANFONDO COSTA DEGLI ETRUSCHI - Marina di Bibbona ||| Foto edizione 2009!!!
Avatar utente
dannyb78
Luce delle stelle
Luce delle stelle
 
Messaggi: 2648
Iscritto il: 26 giu 2005, 16:33
Località: Cecina

Re: [PHP] trasferire parametri tramite "require"

Messaggiodi thrantir il 26 nov 2007, 12:37

sono abilitati solo i parametri passati in POST, controlla nel file di configurazione di apache se si parla di qualcosa relativo ai parametri in GET

comunque quei parametri mi sa che te li devi prendere dall'array GET, ora non mi ricordo bene come si fa, se cerchi su html.it dovresti trovare tutto
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Re: [PHP5] Attivare la sintassi breve per le variabili GET

Messaggiodi dannyb78 il 29 nov 2007, 16:56

Come diceva il buon thrantir il problema era in php.ini, ma sbagliavo ricerca... alla fine ho trovato su php.html.it [url=su php.html.it]questa lezione[/url].

Riassumendo molto nelle nuove versioni di php, per motivi di sicurezza, trasferendo delle variabili per GET viene creato solo l'array $_GET[] e non le variabili.
Per essere più chiari alla sintassi "pagina1.php?var1=1&var2=100" deve corrispondere una pagina1.php così fatta;
<?
$variabile1=$_GET[var1];
$variabile2=$_GET[var2];
echo("$variabile1 - $variabile1");
......
?>


che stamperà a video
1 - 100

Ovviamente variabile1 può chiamarsi in qualsiasi modo, anche var1.

per utilizzare la sintassi breve, ovvero

<?
echo("$var1 - $var2")
......
?>


ottenendo lo stesso risultato è necessario editare il file php.ini (/etc/php5/apache2/php.ini) e cambiare il valore di register_globals in "on"

in teoria quella impostazione dovrebbe avere lo stesso effetto anche sui parametri trasferiti via POST, non voglio chiedermi perchè a me invece funzionavano, ora va sia il GET che il POST e sono in pace con il mondo. Spero questo post possa essere utile anche per altri.
CM Cosmos S | CM Pro Real Power 1000W | ASUS P6T6 WS Revolution | intel i7 965 extreme | CM V8 | Corsair DHX 1600C8 6*2GB | ASUS EAH4870X2 | Creative X-Fi Titanium Fatal1ty Champion Series | WD Velociraptor 300 +Seagate 1,5TB | ASUS Bluray BC-08B1ST | NZXT Sentry LX | Panasonic TH-D42PT84

MTB CLUB CECINA - XII GRANFONDO COSTA DEGLI ETRUSCHI - Marina di Bibbona ||| Foto edizione 2009!!!
Avatar utente
dannyb78
Luce delle stelle
Luce delle stelle
 
Messaggi: 2648
Iscritto il: 26 giu 2005, 16:33
Località: Cecina

 

Torna a Programmare

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite