$_server['php_self']

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
c'è qualche anima gentile che mi spiega perchè

echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">";

è meglio o diverso da

echo "<form method=\"post\" action=\"mia_pagina.php\">";

cioè che differenza c'è tra chiamare $_server o il nome della pagina (altra o la stessa del form)?
:hammer:
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
$ _SERVER [ 'PHP_SELF'] è una variabile d'ambiente supportata da tutte le piattaforme che indica il nome del file su cui è attualmente in esecuzione lo script PHP rispetto alla root del Web server.

In pratica si tratta del nome della pagina corrente; lo puoi utilizzare quando il codice che processa i dati del form si trova nella stessa pagina in cui si trova il form (dai un occhiata a questo Tell a friend).

$ _SERVER [ 'PHP_SELF'] è comodo perché rende il codice di un form riutilizzabile, non dovrai infatti cambiare ogni volta l'argomento riferito all'ACTION.

Naturalmente se il codice che processa i dati si trova in una pagina diversa da quella del form dovrai specificarne il nome e non utilizzare $ _SERVER [ 'PHP_SELF'].
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
40
Sanremo
Beh, come prima cosa usando $_SERVER['PHP_SELF'] per referenziare se stessa, non hai problemi se devi rinominare lo script. In secondo luogo può essere comodo in certe occasioni con gli include. Esempio stupido, ma è il primo che mi è venuto in mente...

Script: self.php
PHP:
<?php

echo '<form name="invia_dati" action="' . $_SERVER['PHP_SELF'] . '" method="get">';
echo '<input type="text" name="testo">';
echo '<input type="submit">';
echo '</form>';

?>
Script: self1.php
PHP:
<html>
<head>
 <title>Modulo di invio pagina 1</title>
</head>
<body>
<?php
if(isset($_GET['testo'])) {
  echo "Self1 " . $_GET['testo'];
} else {
  include("self.php");
}
?>
</body>
</html>
Script: self2.php
PHP:
<html>
<head>
 <title>Modulo di invio pagina 2</title>
</head>
<body>
<?php
if(isset($_GET['testo'])) {
  echo "Self2 " . $_GET['testo'];
} else {
  include("self.php");
}
?>
</body>
</html>
Usando $_SERVER['PHP_SELF'] nello script incluso la form invia i dati alla pagina che lo include senza dover fare altro.
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0

spider

Nuovo Utente
29 Mag 2013
4
0
0
Scusate la domanda da inesperto, ma che differenza c'è tra scrivere:

".$_SERVER['PHP_SELF']." e $_SERVER['PHP_SELF']

Il libro di php(ver.4.0) che sto usando è un po datato è molte cose non riesco a farle funzionare con php(ver.5.2.10).
Grazie.
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
".$variabile." indica che la stai inserendo in una stringa.

es:

$var = "La pagina si chiama " . $_SERVER['PHP_SELF'] . ", capito?";

mentre $_SERVER['PHP_SELF'] è semplicemente la variabile.
 

spider

Nuovo Utente
29 Mag 2013
4
0
0
Grazie, approfitto per fare un altra domanda.


$_server['php_self'] gli apici che racchiudono 'php_self' se li metto mi da errore"Parse error: syntax error......", senza fila tutto liscio.