Newsgroup: it.comp.www.php
Titolo: Problema nell'action di un form

Salve a tutti, sono nuovo, :), e vi scrivo perchč ho bisogno di
risolvere un problemino che non sono riuscito a risolvere da solo, e
spero vivamente che possiate aiutarmi.
Il problema č il seguente: ho questo form che fa parte di una pagina per
la gestione degli accessi con password:
<form action="login.php<?=$link?>" method="post">
 <table cellspacing="2">
  <tr>
   <td>Nome Utente:</td>
   <td><input type="text" name="uname"></td>
  </tr>
  <tr>
   <td>Password:</td>
   <td><input type="password" name="passw"></td>
  </tr>
  <tr>
   <td colspan="2"><input type="submit" name="action"value="login"></td>
  </tr>
 </table>
</form>
il problema sta nel fatto che invece di richimare solo
login.php<?=$link?>", dato che la uso in un altro php la dovrei
richiamare cosě:
<form action="index.php?voce=login<?=$link?>" method="post">
č possibile che perň cosě non venga passato <?=$link?>    ?
Se si come fare?
Qui č dove definisco $link:
if($status == AUTH_LOGGED & auth_get_option("TRANSICTION METHOD") ==
AUTH_USE_LINK){
        $link = "?uid=".$_GET['uid'];
}else   $link = '';
Grazie anticipatamente a tutti.
Lore    

 Se si come fare?
Si.
<form action="login.php?<?=$link?>" method="post">
Anche se sarebbe preferibile:
<form action="login.php?<?php print ($link); ?>" method="post">
e
<form action="index.php?voce=login<?php print ($link); ?>"
method="post">
if (isset ($_GET['uid'])) {
	$link = '&uid=' . urlencode ($_GET['uid']);
} else {
	$link = '';
}
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 }else   $link = '';
[..]
quello non e' il metodo corretto per passare molteplici variabili tramite
_GET..
Errato   -> ?voce=login?uid=value
Corretto -> ?voce=login&uid=value
                       ^
-- 
www.iuz-lab.info

                        ^
quindi sarebbe corretto
if($status == AUTH_LOGGED & auth_get_option("TRANSICTION METHOD") ==
AUTH_USE_LINK){
        $link = '&uid='.urlecode($_GET['uid']);
}else   $link = '';
<form action="index.php?voce=login<?=$link?>" method="post">
Giusto? 

Credo allora ci sia un altro problema nella pagina di login:
<?php
include_once("include/config.php");
include_once("include/auth.lib.php");
list($status, $user) = auth_get_status();
if($status == AUTH_NOT_LOGGED){
        $uname = strtolower(trim($_POST['uname']));
        $passw = strtolower(trim($_POST['passw']));
        if($uname == "" or $passw == ""){
                $status = AUTH_INVALID_PARAMS;
        }else{
                list($status, $user) = auth_login($uname, $passw);
                if(!is_null($user)){
                        list($status, $uid) =
auth_register_session($user);
                }
        }
}
switch($status){
        case AUTH_LOGGED:
                header("Refresh: 5;URL=index.php?voce=home");
                echo '<div align="center">Sei gia connesso ... attendi
il reindirizzamento</div>';
        break;
        case AUTH_INVALID_PARAMS:
                header("Refresh: 5;URL=index.php?voce=home");
                echo '<div align="center">Hai inserito dati non corretti
... attendi il reindirizzamento</div>';
        break;
        case AUTH_LOGEDD_IN:
                switch(auth_get_option("TRANSICTION METHOD")){
                        case AUTH_USE_LINK:
                                header("Refresh:
5;URL=index.php?voce=home&uid=".$uid);
                        break;
                        case AUTH_USE_COOKIE:
                                header("Refresh:
5;URL=index.php?voce=home");
                                setcookie('uid', $uid, time()+3600*365);
                        break;
                        case AUTH_USE_SESSION:
                                header("Refresh:
5;URL=index.php?voce=home");
                                $_SESSION['uid'] = $uid;
                        break;
                }
                echo '<div align="center">Ciao '.$user['name'].' ...
attendi il reindirizzamento</div>';
        break;
        case AUTH_FAILED:
                header("Refresh: 5;URL=index.php?voce=home");
                echo '<div align="center">Fallimento durante il
tentativo di connessione ... attendi il reindirizzamento</div>';
        break;
}
?>
Il problema è che non refrescia e quindi non cambia url, cosa che la
stessa pagina fa, se invece di passare
URL=index.php?voce=home&uid=".$uid passo
URL=home.php?uid=".$uid
qual'è il problema? Scusatemi... ma mi sono impantanato. In realtà tutto
questo funziona se passo solo home.php o login.php etc etc.... se invece
le passo per utilizzare in un include ho sto problema del
reindirizzamento... considerando risolto il problema di prima.
Vi ringrazio ancora tantissimo.
Lore

[cut]
ho scoperto ora che header() si utilizza per inviare header HTTP, e nel
mio caso, per inviare header PHP cosa devo utilizzare?
Avete la possibilità di aiutarmi?
Ancora un grandissimo grazie.
Lore 

PiccioKing wrote:

scusa ma mi sfugge la differenza tra i due tipi di header e nel caso degli
header PHP devo dire che me ne era sfuggita anche l'esistenza..
-- 
www.iuz-lab.info

 header PHP devo dire che me ne era sfuggita anche l'esistenza..
Premetto che non so se ne esista uno, ma suppongo che questo HTTP non
supporti il passaggio di un parametro insieme alla pagina, cioč
URL=index.php?voce=home, ma che supporti solo URL=index.php.
Di conseguenza mi chiedevo se be esistesse uno PHP o se ci fosse un
altro modo per risolvere il mio problema, non so se sono riuscito a
spiegarmi, altrimenti ci riprovo! :-)
Lore

Senti ricominciamo tutto da capo perchè altrimenti facciamo solo
confusione. 
Allora facendo altre prove ho capito che:
la questione dell'header non c'entra niente e funziona perfettamente.
Tutto il problema sta in una di queste due cose:
o
questo form non invia $link
<form action="index.php?voce=login<?php print ($link);?>" method="post">
oppure
la pagina di login (per intenderci quella dove c'erano tutti gli header)
non reinderizza o non riceve $link quando è in inclusa (naturalmente con
l'include) in un'altra pagina php.
che ne pensi?
Ora il problema dovrei essere riuscito a proporlo in modo abbastanza
chiaro! :-)
Grazie ancora per l'aiuto che mi stai dando...
Lore

 Lore
secondo me ti stai complicando la vita..
crea due o tre pagine che possano gestire tutto..
segue un esempio molto semplice che utilizza le sessioni e nessun header
(per tornare indietro basta seguire un link ed IMHO e' il sistema
preferibile)
le prime due pagine sono pensate all'interno di /login nella document root
del sito..
[login_form.php]
<?php
session_start();
$link = isset($_GET['link']) ? urlencode($_GET['link']) :
urlencode($_SERVER['REQUEST_URI']);
echo <<<FORM
<form method='POST' action='user_login.php?link=$link'>
  :: Login ::<br />
 User: <input type='text' name='user' /><br />
 Pass: <input type='text' name='pass' /><br />
 <input type='submit' name='submit' value='Send' /><br />
</form>
FORM;
?>
[/login_form.php]
[user_login.php]
<?php
session_start();
if (isset($_POST['user']) AND
    isset($_POST['pass']) AND
    $_POST['user'] = trim($_POST['user']) AND
    $_POST['pass'] = trim($_POST['pass'])
   ) {
  if (TRUE) { // TEST PER AUTENTICAZIONE
    $_SESSION['AUTH_LOGIN'] = TRUE;
    echo "Login corretto<br /><a href='" .
urldecode($_GET['link']) ."'>Torna alla pagina precedente</a>";
    die();
  }
} 
$_SESSION['AUTH_LOGIN'] = FALSE;
echo "Nome utente o password errati<br /><a href='" .
urldecode($_GET['link']) ."'>Torna alla pagina precedente</a>";
include $_SERVER['DOCUMENT_ROOT'] . 'login/login_form.php';
?>
[/user_login.php]
[test_page.php]
<?php
session_start();
print_r($_SESSION);
include $_SERVER['DOCUMENT_ROOT'] . 'login/login_form.php';
?>
[/test_page.php]
-- 
www.iuz-lab.info