[PHP] Fout in: ?>

Status
Niet open voor verdere reacties.

karimbizid

Gebruiker
Lid geworden
19 dec 2006
Berichten
557
Hallo allemaal,

Ik ben een systeem aan het bouwen voor een site.
Ik sluit 1 van mijn scripts af met ?> (zoals altijd) .

Vervolgens wil ik mijn pagina testen en krijg ik deze melding:
Code:
Parse error: syntax error, unexpected $end in /storage/mijndomein/users/036691/public/sites/seriousmusic.evacuaded.com/1.2/profiles/admin.php on line 52

Maar dit is alles wat er op regel 52 te vinden is:
PHP:
?>

Hoe kan dit en wat moet ik eraan doen??

Alvast bedankt,

Karim
 
Das dus ook de foutmelding, hij vind op regel 52 een $end (?>) terwijl hij hem niet verwacht. ergens daarboven een " open gelaten?
 
Waarschijnlijk een accolade ( } ) vergeten
 
Ik zet mijn geld ook in op Tha Devils antwoord.

unexpected $end houdt in dat het script 'onverwachts' tot z'n einde is gekomen, vaak voorkomende "fout" is een sluit-accolade ( } ) vergeten.
 
Een handige manier om dit te voorkomen is door gebruik te maken van inspringingen.

Ikzelf gebruik altijd 2 spaties.
 
Hier het laatste gedeelte van mijn script:
PHP:
<?php 
include "nieuws_db.php"; 
  
$select = "SELECT * FROM nieuws ORDER by id DESC"; 
$resultaat = mysql_query($select); 
while($record = mysql_fetch_object($resultaat)){ 

echo "<a href=\"admin.php?verwijder=$record->id\">Verwijderen</a> $record->datum - $record->bericht<br>"; 
} 

$verwijder=$_GET['verwijder']; 
if(!empty($verwijder)){ 
mysql_query("DELETE FROM nieuws WHERE id = '$verwijder'"); 
echo '<br><b>Bericht is verwijderd</b><br>'; 
}
?>
 
In dit gedeelte zit de fout niet...

Je zult dus het hele script na moeten gaan, zoals ik zei: gebruik inspringing.

Dan zit bovenstaande code er zo uit:
PHP:
<?php 
include "nieuws_db.php"; 
   
$select = "SELECT * FROM nieuws ORDER by id DESC"; 
$resultaat = mysql_query($select); 
while($record = mysql_fetch_object($resultaat)){ 
  echo "<a href=\"admin.php?verwijder=$record->id\">Verwijderen</a> $record->datum - $record->bericht<br>";
} 

$verwijder=$_GET['verwijder']; 
if(!empty($verwijder)){ 
  mysql_query("DELETE FROM nieuws WHERE id = '$verwijder'"); 
  echo '<br><b>Bericht is verwijderd</b><br>'; 
} 
?>
 
Dat is heel raar...
Hier is de complete pagina:
PHP:
<? 
    if ($_SERVER["PHP_AUTH_USER"] != "admin" || $_SERVER["PHP_AUTH_PW"] != "pass") 
    { 

        header("WWW-Authenticate: Basic realm=\"Admin login\"");   
        header("HTTP/1.0 401 Unauthorized"); 
          
        echo "<font face=\"Verdana\" size=\"1\">Je hebt geen rechten tot deze pagina!</font>"; 
    }      
    else 
    { 
?> 

<title>Administratie Paneel</title>
<font face="Verdana" size="4"><b>Administratie Paneel:</b><br>

<hr>

<font face="Verdana" size="1"><b>Nieuws berichten:</b><br>


<form action="nieuwstoevoegen.php" method="POST">
<p align="center">
<font face="Verdana" size="1">Datum: <br>
<input type="text" name="datum" size=8 style="border: 1px solid #000000; background-color: #FFFFFF; font-family:Verdana; font-size:8 pt" value="<? echo date("d/m/y"); ?>"><br>
<br>
Je bericht:<br>
<input name="bericht" size=50 style="border: 1px solid #000000; background-color: #FFFFFF; font-family:Verdana; font-size:8 pt" ></font></p>
<p align="center">
<font face="Verdana" size="1">
<input type="submit" Value="Toevoegen" style="background-position: center; float: right; font-family:Verdana; font-size:8 pt"></font><br>
&nbsp;</p>
</form>


<?php 
include "nieuws_db.php"; 
  
$select = "SELECT * FROM nieuws ORDER by id DESC"; 
$resultaat = mysql_query($select); 
while($record = mysql_fetch_object($resultaat)){ 

echo "<a href=\"admin.php?verwijder=$record->id\">Verwijderen</a> $record->datum - $record->bericht<br>"; 
} 

$verwijder=$_GET['verwijder']; 
if(!empty($verwijder)){ 
mysql_query("DELETE FROM nieuws WHERE id = '$verwijder'"); 
echo '<br><b>Bericht is verwijderd</b><br>'; 
}
?>

Zoals je ziet moet de fout wel in het onderste deel zitten , want het script wordt eerder al afgesloten, dan komt er een gedeelte HTML en dan begint er weer een klein stukje PHP.

Ik zal het hoogst waarschijnlijk wel verkeerd begrijpen....
 
Laatst bewerkt:
Zoals ik zei, inspringen :)

Ik heb hem nog niet verbeterd ik hoop dat je ziet waar je wat mist dankzij de inspringing.
PHP:
<? 
if($_SERVER["PHP_AUTH_USER"] != "admin" || $_SERVER["PHP_AUTH_PW"] != "pass") {
  header("WWW-Authenticate: Basic realm=\"Admin login\"");   
  header("HTTP/1.0 401 Unauthorized"); 
  echo "<font face=\"Verdana\" size=\"1\">Je hebt geen rechten tot deze pagina!</font>"; 
} else { 
?> 

<title>Administratie Paneel</title>
<font face="Verdana" size="4"><b>Administratie Paneel:</b><br>

<hr>

<font face="Verdana" size="1"><b>Nieuws berichten:</b><br>


<form action="nieuwstoevoegen.php" method="POST">
<p align="center">
<font face="Verdana" size="1">Datum: <br>
<input type="text" name="datum" size=8 style="border: 1px solid #000000; background-color: #FFFFFF; font-family:Verdana; font-size:8 pt" value="<? echo date("d/m/y"); ?>"><br>
<br>
Je bericht:<br>
<input name="bericht" size=50 style="border: 1px solid #000000; background-color: #FFFFFF; font-family:Verdana; font-size:8 pt" ></font></p>
<p align="center">
<font face="Verdana" size="1">
<input type="submit" Value="Toevoegen" style="background-position: center; float: right; font-family:Verdana; font-size:8 pt"></font><br>
&nbsp;</p>
</form>

<?php
  include "nieuws_db.php"; 
  $select = "SELECT * FROM nieuws ORDER by id DESC"; 
  $resultaat = mysql_query($select); 
  while($record = mysql_fetch_object($resultaat)) { 
    echo "<a href=\"admin.php?verwijder=$record->id\">Verwijderen</a> $record->datum - $record->bericht<br>"; 
  } 

  $verwijder=$_GET['verwijder']; 
  if(!empty($verwijder)) { 
    mysql_query("DELETE FROM nieuws WHERE id = '$verwijder'"); 
    echo '<br><b>Bericht is verwijderd</b><br>'; 
  }
?>
Dat jij denk dat de fout uit het einde komt klopt ook, maar het komt door iets uit het begin. Aangezien die fout pas aan het einde naar boven komt wordt daar dus ook die foutmelding gegeven.

Mocht je het niet weten.
Hier staat het antwoord tussen, even selecteren en je zult het zien... (Jammer dat de juiste kleur niet in het rijtje staat :))
[Je bent vergeten de ELSE bovenaan vergeten af te sluiten]
 
Ja, gevonden! :)

Goed idee om het antwoord (bijna) onzichtbaar te maken
dat houdt het spannend :p
 
Oke,
Ik snap nu waarom het niet werkt, maar ik snap dus niet hoe ik het op moet lossen.
Het HTML gedeelte moet worden weergegeven als de user ook echt een admin is...
Hoe doe ik dit?
Waar moet ik de else afsluiten?

Alvast bedankt,

Karim
 
Tel de haakjes zou ik zeggen, kijk ook wat je met die eerste IF-statement doet en wanneer je dus die ELSE af moet sluiten.

Dus wat moet er allemaal uit worden gevoerd wanneer de admin wel juist is ingelogt...
 
Nou dat snap ik ook wel...
Het HTML gedeelte moet zichtbaar worden als de user echt de rang admin heeft,
maar ik krijg de kans niet om hem af te sluiten, omdat voor het HTML gedeelte het PHP script wordt afgesloten d.m.v. ?>

Ik heb ook geprobeerd om het php script niet halverwege af te sluiten, maar gewoon door te laten lopen, maar dan snap het script het HTML gedeelte weer niet :(

Hoe nu verder?
 
Hmm zo moeilijk leek het mij niet, gewoon op het einde een } plaatsen...
PHP:
<? 
if($_SERVER["PHP_AUTH_USER"] != "admin" || $_SERVER["PHP_AUTH_PW"] != "pass") {
  header("WWW-Authenticate: Basic realm=\"Admin login\"");   
  header("HTTP/1.0 401 Unauthorized"); 
  echo "<font face=\"Verdana\" size=\"1\">Je hebt geen rechten tot deze pagina!</font>"; 
} else { 
?> 

<title>Administratie Paneel</title>
<font face="Verdana" size="4"><b>Administratie Paneel:</b><br>

<hr>

<font face="Verdana" size="1"><b>Nieuws berichten:</b><br>


<form action="nieuwstoevoegen.php" method="POST">
<p align="center">
<font face="Verdana" size="1">Datum: <br>
<input type="text" name="datum" size=8 style="border: 1px solid #000000; background-color: #FFFFFF; font-family:Verdana; font-size:8 pt" value="<? echo date("d/m/y"); ?>"><br>
<br>
Je bericht:<br>
<input name="bericht" size=50 style="border: 1px solid #000000; background-color: #FFFFFF; font-family:Verdana; font-size:8 pt" ></font></p>
<p align="center">
<font face="Verdana" size="1">
<input type="submit" Value="Toevoegen" style="background-position: center; float: right; font-family:Verdana; font-size:8 pt"></font><br>
&nbsp;</p>
</form>

<?php
  include "nieuws_db.php"; 
  $select = "SELECT * FROM nieuws ORDER by id DESC"; 
  $resultaat = mysql_query($select); 
  while($record = mysql_fetch_object($resultaat)) { 
    echo "<a href=\"admin.php?verwijder=$record->id\">Verwijderen</a> $record->datum - $record->bericht<br>"; 
  } 

  $verwijder=$_GET['verwijder']; 
  if(!empty($verwijder)) { 
    mysql_query("DELETE FROM nieuws WHERE id = '$verwijder'"); 
    echo '<br><b>Bericht is verwijderd</b><br>'; 
  }
}
?>
 
Ow, ja natuurlijk...
Ik zit de hele tijd te zoeken in het bovenste PHP gedeelte...

Bedankt:thumb:!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan