Newsgroup: it.comp.www.php
Titolo: "syntax error, unexpected $end in"

Buongiorno/Buonasera a tutti,
ho un piccolo problema con php che non capisco....
Ho programmato varie pagine in php, poi ho formattato e reinstallato
php5, apache 2 e mysql(non mi ricordo la versiona ora). Cerco di
visualizzare una pagina (naturalmente in locale) ma mi da questo errore
e non riesco a venirne a capo:
Parse error: syntax error, unexpected $end in C:\Programmi\Apache
Group\Apache2\htdocs\sito_compa\login.php on line 93
La riga 93 è l'ultima del file; ho provato ad aggiungere qualche
graffa giusto per mettere una "fine" in più ma mi da sempre lo stesso
errore. Il bello è che caricato sul server funziona....
Penso quindi che sia un errore nella reinstallazione ma cercando in
internet non ho trovato soluzione... Se mi poteste aiutare ve ne sarei
grato...
Allego copia del sorgente:
<?php session_start(); ?>
<html>
<head>
<link href="Stile.css" rel="stylesheet" type="text/css">
<title>Login</title>
</head>
<script language="javascript">
	function twoinone(){ parent.centro.location.href="iniziale.htm";	}
</script>
<body topmargin="1" leftmargin="1" rightmargin="1">
<?php
if ($_POST['entra']=="Entra"){
	include("parametri_db.php");
	$user = $_POST['user'];
	$password = md5($_POST['psw']);
	$dbconnect = mysql_connect("localhost",$dbun,$dbpsw);
	$strsql="select username,nome,cognome from phpbb_users where
username='$user' and user_password='$password'";
	$recset = mysql_db_query($dbname,$strsql);
	$result3 = mysql_num_rows($recset);
	if (mysql_num_rows($recset)==1) {
		$s = mysql_fetch_array($recset);
		$nome = strlen(mysql_result($recset,0,"nome"));
		$cognome = strlen(mysql_result($recset,0,"cognome"));
		if (($nome=="")||($cognome=="")||($nome==1)||($cognome==1)){?>
			<script language="JavaScript">
				alert("ATTENZIONE: Vai su profilo e aggiornalo inserendo il tuo
nome e cognome!");
			</script>
<?			}
		$strsq = "select user_session_time,user_lastvisit from phpbb_users
where username='$user'";
		$recse = mysql_db_query($dbname,$strsq);
		$tempo = mysql_result($recse,"user_session_time",0);
		$tempo1 = mysql_result($recse,0,"user_lastvisit");
		if ($tempo != $tempo1){
			$str = "update phpbb_users set user_session_time=" . time() . ",
user_lastvisit=$tempo where username='$user'";}
		else{
			$str = "update phpbb_users set user_session_time=" . time() . "
where username='$user'";}
		$rec = mysql_db_query($dbname,$str);
		$_SESSION['user'] = $s["username"];
	}
	else{ $sbagliato=1;}
	mysql_close($dbconnect);
}
		//da qui si inzia a creare la pagina?>
<br><img src="immagini%20varie/Ovale.gif" width="20" height="10"> <a
href="iniziale.htm" target="centro">Home</a>
<br> <img src="immagini%20varie/Ovale.gif" width="20" height="10"> <a
href="news.htm" target="centro">News</a>
<br> <img src="immagini%20varie/Ovale.gif" width="20" height="10"> <a
href="foto.php" target="centro">Foto</a>
<br> <img src="immagini%20varie/Ovale.gif" width="20" height="10"> <a
href="download.htm" target="centro">Download</a>
<br> <img src="immagini%20varie/Ovale.gif" width="20" height="10"> <a
href="Forum/phpBB2/index.php" target="_blank">Forum</a>
<br> <img src="immagini%20varie/Ovale.gif" width="20" height="10"> <a
href="link.htm" target="centro">Link</a>
<? if (session_is_registered('user')) {?>
<br>----------------
<br> <img src="immagini%20varie/Ovale.gif" width="20" height="10"> <a
href="prof.php" target="centro">Profilo</a>
<br> <img src="immagini%20varie/Ovale.gif" width="20" height="10"> <a
href="fottue.php" target="centro">Carica foto</a>
<br> <img src="immagini%20varie/Ovale.gif" width="20" height="10"> <a
href="visufoto.php" target="centro">Album</a>
<?
  if ($_SESSION['user']=="loschizzato"){ ?>
<p><img src="immagini%20varie/Ovale.gif" width="20" height="10"> <a
href="amministr.php" target="centro">Admin</a>
<? }
	$oggi = getdate();
	$nome = $_SESSION['user'];
	if (($oggi['hours']<16)&&($oggi['hours']>6)) {echo("<p>Buongiorno
$nome <br>");}
	else if (($oggi['hours']>16)&&($oggi['hours']<21)) {echo("<p>Buonasera
$nome <br>");}
	else {echo("<p>Buonanotte $nome <br>");}
	echo("<a href='logout.php' onClick='twoinone()'>Logout</a> ");
}else{	?>
<form name="form" method="post" action="">
<table width="95%" height="15" border="0" cellpadding="2"
cellspacing="0">
	<tr>
		<td height="5"><span class="intro"><em>User</em></span></td>
		<td>
		<div align="right">
			<input name="user" type="text" size="11">
		</div></td></tr>
	<tr>
		<td height="5"><span class="intro"><em>Pass</em></span></td>
		<td><div align="right">
		<input name="psw" type="password" size="11">
		</div></td>
	</tr>
	<tr>
		<td height="5"><a href="registrazione.php" target="centro">
	Registrati</a></td>
		<td><div align="right">
		<input type="submit" name="entra" value="Entra" class="entra"
	onClick="if((document.form.psw.value=='')||(document.form.user.value=='')){alert('Inserisci
sia la password che il nome utente');return false;}">
	</div></td>
	</tr>
</table>
<?	if ($sbagliato==1): ?> <b><font color=red>WRONG!!!</font></b> <?
endif;
}?>
</form>
</body>
</html>
Grazie mille a tutti...

A volte apri lo script php con
<?php
a volte con
<?
Non sarà che nel server sono abilitate le due forme, mentre in locale non lo 
hai fatto ?
Ciao
sicampa 

Sei un genio :-)
Non sapevo che ci fosse questa differenza; nel momento in cui ho
reinstallato tutto non ho letto nella guida qualcosa a proposito.
Adesso devo risolvere un altro problemino; ossia che mi esegue tutto
senza quasi andare a vedere se ci sono gli if....sarà una
configurazione su qualche file di testo,vero?
Grazie ancora per la soluzione del problema precedente



senza quasi andare a vedere se ci sono gli if....
Mi dispiace non ho il tempo per esaminare tuto il codice, anche perché 
dovrei vedere gli "include" a cosa arriva dal database.
Metti degli "echo $nomedellavariabile;" e vedi cosa contengono le variabili 
degli "if", cosí ti rendi conto.
Una cosa,  quel "$result3" che definisci e non usi, non è che ti sei perso 
qualche pezzo di codice ?
Buon lavoro :)
Ciao
sicampa

Ti rispondo subito alla tua ultima domanda: la risposta è alla riga
successiva di codice; all'inizio avevo fatto contare su $result3 il
numero di righe che mi restituiva la query e avevo utilizzato $result3
nell'if, poi ho usato una forma + compatta ma non ho cancellato la
variaiìbile...
Adesso provo a vedere e poi ti faccio sapere....
ciao ciao Ricky
sicampa ha scritto:


No, ho provato un pò a guardare in giro...
Praticamente se visiono il codice html della pagina php mi compaiono
parti di codice con <? ..... che non dovrebbero nemmeno vedersi, non è
un problema di if
La pagina di prima mi viene mostrata così:
 Home
 News
 Foto
 Download
 Forum
 Link
----------------
 Profilo
 Carica foto
 Album
 Admin
6)) {echo("
Buongiorno $nome
");} else if (($oggi['hours']>16)&&($oggi['hours']<21)) {echo("
Buonasera $nome
");} else {echo("
Buonanotte $nome
");} echo("Logout "); }else{ ?>
User
Pass
Registrati
WRONG!!!"); echo($sbagliato);endif;?>
Il che non ha molto senso...boh...

 
Il problema dovrebbe risiedere qui:
<?
  if ($_SESSION['user']=="loschizzato"){ ?>
<p><img src="immagini%20varie/Ovale.gif" width="20" height="10"> <a
href="amministr.php" target="centro">Admin</a>
<? }
	$oggi = getdate();
	$nome = $_SESSION['user'];
	if (($oggi['hours']<16)&&($oggi['hours']>6)) {echo("<p>Buongiorno
$nome <br>");}
	else if (($oggi['hours']>16)&&($oggi['hours']<21)) {echo("<p>Buonasera
$nome <br>");}
	else {echo("<p>Buonanotte $nome <br>");}
	echo("<a href='logout.php' onClick='twoinone()'>Logout</a> ");
}else{	?>
perché i primi tag <? ?> si cominciano a vedere dopo la scritta "Admin"...
potresti cortesemente postare il codice _attuale_ della pagina PHP, con
le modifiche che hai fatto? Guardando il codice che hai postato
originariamente, non sembrano esserci errori... magari tentando e
smanettando hai messo qualche ), qualche ;, qualche ?> in più...
David
P.S.: indentare un pò meglio il codice no, eh :P
-- 
Linux Registered User #334216
Get FireFox! >> 
http://www.spreadfirefox.com/?q=affiliates&id=48183&t=1
Staff >> 
http://www.debianizzati.org
 <<

Ecco il codice:
<? session_start(); ?>
<html>
<head>
<link href="Stile.css" rel="stylesheet" type="text/css">
<title>Login</title>
</head>
<script language="javascript">
	function twoinone() { parent.centro.location.href="iniziale.htm"; }
</script>
<body topmargin="1" leftmargin="1" rightmargin="1">
<?
  if ($_POST['entra']=="Entra"){
	include("parametri_db.php");
	$user = $_POST['user'];
	$password = md5($_POST['psw']);
	$dbconnect = mysql_connect("localhost",$dbun,$dbpsw);
	$strsql="select username,nome,cognome from phpbb_users where
username='$user' and user_password='$password'";
	$recset = mysql_db_query($dbname,$strsql);

<?
  if ($_SESSION['user']=="loschizzato"){ ?>
<p><img src="immagini%20varie/Ovale.gif" width="20" height="10"> <a
href="amministr.php" target="centro">Admin</a></p>
<? }
	$oggi = getdate();
	$nome = $_SESSION['user'];
	if (($oggi['hours']<16)&&($oggi['hours']>6)) {
		echo("<p>Buongiorno $nome <br>");}
	else if (($oggi['hours']>16)&&($oggi['hours']<21)) {
		echo("<p>Buonasera $nome <br>");}
	else {
		echo("<p>Buonanotte $nome <br>");}
	echo("<a href='logout.php' onClick='twoinone()'>Logout</a> ");
}else{	?>

<?	if ($sbagliato==1): echo("<b><font color=red> WRONG!!!</font></b>");
endif;?>
</form>
<? }?>
</body>
</html>
ma non mi sembra di indentarlo proprio male :-( a volte sì dai ;-)

 
Guarda, veramente, non trovo alcun errore...
ora provo a farlo girare in locale da me e debuggarlo un pò.
Comunque, un consiglio:
if (($oggi['hours']<16)&&($oggi['hours']>6)) {
	echo("<p>Buongiorno $nome <br>");}
else if (($oggi['hours']>16)&&($oggi['hours']<21)) {
	echo("<p>Buonasera $nome <br>");}
else {
	echo("<p>Buonanotte $nome <br>");}
E se sono le 16:32 cosa appare? Buonanotte $nome?
Ti conviene fare:
if (($oggi['hours']<=16)&&($oggi['hours']>6)) {
	echo("<p>Buongiorno $nome <br>");}
else if (($oggi['hours']>16)&&($oggi['hours']<=21)) {
	echo("<p>Buonasera $nome <br>");}
else {
	echo("<p>Buonanotte $nome <br>");}
Ora vedo un pò cosa posso fare, eh :P
David


Giustissimo, caso non previsto :-|
Che programma per fare il debug mi consigli? Ho tirato giù phpedit ma
non riesco a far partire il debug: dopo poco mi dice sessione scaduta e
si ferma...
David Paleino ha scritto:


 
Beh, anzitutto non top-postare.
Secondo, quota solo le parti rilevanti del messaggio. :)
Ora parliamo di PHP... debugger non ne conosco, mi spiace, solitamente
debuggo a mano con print_r(), echo() e funzioni varie...
