non trovo l'errore di sintassi

salve a tutti,

sono un vero novizio con php e con la programmazione web in generale, quindi a scopo didattico sto provando a creare un sito che faccia uso di php e postgresql come db. inoltre sto usando anche PEAR.

nello script seguente ricevo un errore del parser php (almeno credo!) ma rileggendo il codice più volte non riesco a trovarlo.

l'errore è

Parse error: syntax error, unexpected $end in C:\Server\htdocs\php\register.php on line 138

cosa sto sbagliando?

ecco il codice

EDIT: nella variabile $okinsert ho inserito un heredoc, ma anche se nella visuale del forum sembra che ci sia uno spazio prima della keyword di chiusura _HTML_ in verità non c'è...non so perchè nel post veda lo spazio!

<?php
   require 'connect.php';
   
   //recupero dati
   $nome = $_POST["nome"];
   $cognome = $_POST["cognome"];
   $anno = $_POST["anno"];
   $citta = $_POST["citta"];
   $codf = $_POST["codf"];
   $telefono = $_POST["telefono"];
   $psw = $_POST["password"];
   
   //pagine errore
   $errorvariabili = <<<_HTML_
      <html>
         <head>
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
         <title>Registrazione clienti</title>
         <link rel="stylesheet" type="text/css" href="../css/login.css" media="all" /><!--Collegamento al foglio di stile-->
         </head>
         <body>
         <div id="layout">
         <div id="header">
         <strong>Registrazione Clienti</strong></div>
         <div id="content">
         <br />
         <br />
         Non hai compilato tutti i campi necessari per la registrazione o non hai inserito il parametro anno in un formato corretto
         <br />
         <br />
         <strong><a href="../registrazione.html">RITENTA</a></strong>
         <br />
         <br />
         <br />
         </div>
         <div id="footer">
         <em>&copy;Ninjatux 2008</em></div>
         </div>
         </body>
      </html>
_HTML_;

   $errorinsert = <<<_HTML_
      <html>
         <head>
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
         <title>Registrazione clienti</title>
         <link rel="stylesheet" type="text/css" href="../css/login.css" media="all" /><!--Collegamento al foglio di stile-->
         </head>
         <body>
         <div id="layout">
         <div id="header">
         <strong>Registrazione Clienti</strong></div>
         <div id="content">
         <br />
         <br />
         Siamo spiacenti il servizio è fuori uso, riprovi più tardi
         <br />
         <br />
         <strong><a href="../registrazione.html">RITENTA</a></strong> o torna <strong><a href="../index.html">INDIETRO</a></strong>
         <br />
         <br />
         <br />
         </div>
         <div id="footer">
         <em>&copy; Ninjatux 2008</em></div>
         </div>
         </body>
      </html>
_HTML_;

   //pagine ok
   $okinsert = <<<_HTML
      <html>
         <head>
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
         <title>Registrazione clienti</title>
         <link rel="stylesheet" type="text/css" href="../css/login.css" media="all" /><!--Collegamento al foglio di stile-->
         </head>
         <body>
         <div id="layout">
         <div id="header">
         <strong>Registrazione Clienti</strong></div>
         <div id="content">
         <br />
         <br />
         Registrazione avvenuta con successo, torna indietro ed effettua il <strong><a href="../login.html">login</a></strong>
         <br />
         <br />
         <br />
         </div>
         <div id="footer">
         <em>&copy;Ninjatux 2008</em></div>
         </div>
         </body>
      </html>
_HTML_;

   //controllo
   if(!isset($nome) || !isset($cognome) || !isset($anno) || !isset($citta) || !isset($codf) || !isset($telefono) || !isset($psw) || !is_numeric($anno)){
      echo $errorvariabili;
   } else {
      
      //pulizia variabili
      $nome = trim($nome);
      $nome = addslashes($nome);
      $cognome = trim($cognome);
      $cognome = addslashes($cognome);
      $datan = $giorno."/".$mese."/".$anno;
      $datan = trim($datan);
      $datan = addslashes($datan);
      $citta = trim($citta);
      $citta = addslashes($citta);
      $codf = trim($codf);
      $codf = addslashes($codf);
      $telefono = trim($telefono);
      $telefono = addslashes($telefono);
      $psw = trim($psw);
      $psw = addslashes($psw);
      $psw = md5($psw);
      
      
      //query
      $query = "insert into ditta.cliente(codf, psw, nome, cognome, telefono, datan, citta) values (";
      $query = $query."'".$codf."','".$psw."','".$nome."','".$cognome."','".$telefono."','".$datan."','".$citta."')";
      
      //inserimento
      $risultato = $mdb2->exec($query);
      if(PEAR::isError($risultato)){
         die($risultato->getMessage());
         echo $errorinsert;
      }else {
         echo $okinsert;
      }
   }
   require 'disconnect.php';
?>
inviato 8 anni fa
ninjatux
modificato 8 anni fa
X 0 X

scusate, ho trovato l'errore.

vi spiego come ho fatto cosi posso aiutare gli imbranati come me! (se ce ne fossero)

per capire dove era localizzato l'errore ho tolto dallo script tutte le variabili che memorizzavano un heredoc e le ho messe dentro altri file .php da caricare a inizio pagina:

<?php
   require 'connect.php';
   require 'errors.php';
   require 'accept.php';
   
   //recupero dati
   $nome = $_POST["nome"];
   $cognome = $_POST["cognome"];
   $anno = $_POST["anno"];
   $citta = $_POST["citta"];
   $codf = $_POST["codf"];
   $telefono = $_POST["telefono"];
   $psw = $_POST["password"];

   //controllo
   if(!isset($nome) || !isset($cognome) || !isset($anno) || !isset($citta) || !isset($codf) || !isset($telefono) || !isset($psw) || !is_numeric($anno)){
      echo $errorvariabilireg;
   } else {
      
      //pulizia variabili
      $nome = trim($nome);
      $nome = addslashes($nome);
      $cognome = trim($cognome);
      $cognome = addslashes($cognome);
      $datan = $giorno."/".$mese."/".$anno;
      $datan = trim($datan);
      $datan = addslashes($datan);
      $citta = trim($citta);
      $citta = addslashes($citta);
      $codf = trim($codf);
      $codf = addslashes($codf);
      $telefono = trim($telefono);
      $telefono = addslashes($telefono);
      $psw = trim($psw);
      $psw = addslashes($psw);
      $psw = md5($psw);
      
      
      //query
      $query = "insert into ditta.cliente(codf, psw, nome, cognome, telefono, datan, citta) values (";
      $query = $query."'".$codf."','".$psw."','".$nome."','".$cognome."','".$telefono."','".$datan."','".$citta."')";
      
      //inserimento
      $risultato = $mdb2->exec($query);
      if(PEAR::isError($risultato)){
         die($risultato->getMessage());
         echo $errorinsertreg;
      }else {
         echo $okinsertreg;
      }
   }
   require 'disconnect.php';
?>

in questo modo l'errore di sintassi ho capito che era localizzato dentro una di esse, in pratica le keyword di apertura e chiusura di $okinsert non erano uguali...

chiedo scusa se ho fatto un post inutile, ma spero di aver rimediato almeno in parte fornendo questa piccolissima spiegazione!

ciauz

risposto 8 anni fa
ninjatux
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda