Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Button HTML e PHP, perche' non funziona?

    Ciao a tutti, sto cercando di capire come funziona il passaggio di dati tra html e php.
    Per fare questo ho cercato un esempio (a dire il vero ne ho cercati e provati tanti) che però non mi funziona e non riesco a capire il perche'.
    Il codice che sto provando ora e' questo:
    codice:
    <?php
    
    $msg = "";
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $name = $_POST["name"];
        $password = $_POST["password"];
    
    
        echo "aaaaaaaaaaaaaaaaaaa";
        echo $name;
        echo $password;    
    }
    ?>
    
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>prova</title>
    <meta name="description" content=""/>
    <meta name="keywords" content=""/>
    <link href="style.css" rel="stylesheet" type="text/css">
    
    
    </head>
    <body>
    
    
        <form name="frmregister"action="<?= $_SERVER['PHP_SELF'] ?>" method="post" >
            <table class="form" border="0">
    
    
                <tr>
                <td></td>
                    <td style="color:red;">
                    <?php echo $msg; ?></td>
                </tr> 
                
                <tr>
                    <th><label for="name"><strong>Name:</strong></label></th>
                    <td><input class="inp-text" name="name" id="name" type="text" size="30" /></td>
                </tr>
                <tr>
                    <th><label for="name"><strong>Password:</strong></label></th>
                    <td><input class="inp-text" name="password" id="password" type="password" size="30" /></td>
                </tr>
                <tr>
                <td></td>
                    <td class="submit-button-right">
                    <input class="send_btn" type="submit" value="Submit" alt="Submit" title="Submit" />
                    
                    <input class="send_btn" type="reset" value="Reset" alt="Reset" title="Reset" /></td>
                    
                </tr>
            </table>
        </form>
    
    
    </body>
    </html>
    Non e' l'esempio originale, l'ho un po' striminzito per cercare di ridurlo all'essenziale, ma nonostante questo non funziona.
    Se non ho capito male il funzionamento, quando clicco sul pulsante submit, in base alle mie modifiche dovrebbe scrivere a video $nome e $password, ma non lo fa
    Dopo una giornata di prove mi arrendo e chiedo aiuto sperando di trovare qualche buonanima
    Grazie.

    Stefano

    P.S. Ho fatto un sacco di ricerche per cercare di capire, ma nei vari forum tutti hanno postato piccoli esempi che a detta loro dovrebbero aver funzionato ma a me non ne ha funzionato nemmeno uno.
    Mi era venuto il dubbio che dipendesse dalla configurazione di php nel mio PC (debian jessie) e quindi ho uplodato il file php in un dominio dove sta girando un programma ecommerce in php, ma nemmeno li il mio file funziona quindi ho escluso anche l'errore di configurazione di php.
    Stefanoxjx

  2. #2
    A me funziona..
    Assicurati che nel php.ini sia attivato lo short tag dato che lo usi nei test (short_open_tag=On) oppure sostituisci <?= con <?php

  3. #3
    Ho cambiato il parametro short_open_tag e l'ho impostato a On, però il problema persiste.
    Comunque, come avrai notato nel codice che ho postato, il tag per php è già <?php e non <?.
    Quello che non capisco è perchè non funziona nemmeno nel dominio in cui sta girando un intero gestionale in php.
    Stefanoxjx

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    188
    Nel pulsante submit metti anche l'attributo name (esempio: name="invia")

    Sostituisci l'if iniziale:
    if#($_SERVER['REQUEST_METHOD']#==#'POST')#{

    con:
    if ($_POST [invia]) {

  5. #5
    Oh, finalmente si inizia a vedere un po' di luce
    Intanto ti ringrazio per le dritte che hanno risolto il problema però a metà.
    Come da tuo consiglio ho modificato il file in questo modo:
    codice:
    <?php
    
    
    $msg = "";
    if ($_POST [invia]) {
        $name = $_POST["name"];
        $password = $_POST["password"];
    
    
        echo $name."  ";
        echo $password;
    }
    ?>
    
    
    
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>prova</title>
    <meta name="description" content=""/>
    <meta name="keywords" content=""/>
    <link href="style.css" rel="stylesheet" type="text/css">
    
    
    
    
    </head>
    <body>
    
    
    
    
        <form name="frmregister"action="<?= $_SERVER['PHP_SELF'] ?>" method="post" >
            <table class="form" border="0">
    
    
    
    
                <tr>
                <td></td>
                    <td style="color:red;">
                    <?php echo $msg; ?></td>
                </tr>
    
    
                <tr>
                    <th><label for="name"><strong>Name:</strong></label></th>
                    <td><input class="inp-text" name="name" id="name" type="text" size="30" /></td>
                </tr>
                <tr>
                    <th><label for="name"><strong>Password:</strong></label></th>
                    <td><input class="inp-text" name="password" id="password" type="password" size="30" /></td>
                </tr>
                <tr>
                <td></td>
                    <td class="submit-button-right">
                    <input class="send_btn" type="submit" value="Submit" alt="Submit" title="Submit" name="invia" />
    
    
                    <input class="send_btn" type="reset" value="Reset" alt="Reset" title="Reset" /></td>
                </tr>
            </table>
        </form>
    
    
    
    
    </body>
    </html>
    e così funziona, ma solo nel dominio dove ho già un sito che sta girando in php.
    Nella macchina debian che ho installato per queste prove ancora non funziona.
    L'unica cosa che riesco a vedere appena carico la pagina sono questi avvisi (ho attivato la visualizzazione degli errori sul php.ini)
    Notice: Use of undefined constant invia - assumed 'invia' in /var/www/html/index.php on line 4 Notice: Undefined index: invia in /var/www/html/index.php on line 4


    ma quando clicco su submit continuo a non veder succedere nulla.
    A questo punto è ovvio che dipende dalla configurazione del php.
    Ho fatto delle prove empiriche e le righe di codice in php vengono eseguite, ho problemi solo (almeno al momento) con questo passaggio di argomenti tra html e php.
    Da cosa potrebbe dipendere?

    Grazie.

    Stefano
    Stefanoxjx

  6. #6
    Metti gli apici su "invia" alla riga 4:

    if($_POST["invia"]){

  7. #7
    Ho messo gli apici come mi hai detto, ma niente da fare.
    Nella macchina virtuale debian non ne vuole sapere di funzionare

    S
    Stefanoxjx

  8. #8
    Ho provato a sostituire il php.ini con quello di un server di produzione e ora lo script funziona anche sulla macchina virtuale debian.
    Ora dovrò capire quale può essere il parametro di configurazione che crea il problema.

    Stefano
    Stefanoxjx

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    188
    Quello che hai tu non � un errore (se no sarebbe "fatal error" ma un avviso (notice), perch� la variabile non � stata dichiara all'inzio ($_POST[invia] = null

    vai nel php.ini e controlla la riga error_reporting: error_reporting(E_ALL ^ E_NOTICE);

    il mio consiglio � di lasciare quella riga che hai con il php.ini dove ti funziona tutto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.