Parse error: parse error, unexpected $end in

Moin,

und willkommen an Board :)

was der Fehler ist, hat Kai ja schon gesagt:

Code:
while($row = mysql_fetch_assoc($result)) {

...der markierten Klammer fehlt das schliessende Pendant....ganz am Ende direkt vor dem schliessenden PHP-Tag wäre ein guter Platz.

Gute Editoren können dir bei solcher Fehlersuche helfen, bspw. über Funktionen wie Hervorheben von Klammerpaaren(geschwisterlose Klammern werden dort gesondert markiert)

http://www.pspad.com/de/ wäre bspw. ein solcher Editor....der noch vieles mehr draufhat :)
 
Hallo, ich habe mir mal gedacht ich lasse den Thread nochmal aufblühen, auch ich habe, wie glaube fast alle Fragestellenden, über Google hier her gefunden. Google-Optimierung kann sich also sehen lassen ^^. Ich habe auch den Fehler Parse error: syntax error, unexpected $end in... Ich glaube es wird nur ein ganz sinnloser Fehler sein, aber ich finde ihn einfach nicht. Habe schon verschiedene Hilfsmittel, die hier angeboten wurden, ausprobiert, doch ohne Erfolg.
Vllt. könnt ihr einen PHP-Anfänger helfen ;-)

Der Fehler liegt in der letzten Zeile.

PHP:
<?php
	session_start();
	
	if(isset($_SESSION["login"])) {
		include("db.php");
		include("einstellung_function.php");
		refresh($_SESSION["login"]);
		$geburtstag = $_POST["tag"];
		$geburtstag .= ".";
		$geburtstag .= $_POST["monat"];
		$geburtstag .= ".";
		$geburtstag .= $_POST["jahr"];
		$email = $_REQUEST["email"];
		$vorname = $_REQUEST["name"];
		$nachname = $_REQUEST["nachname"];
		$wohnort = $_REQUEST["wohnort"];
		$bundesland = $_REQUEST["bundesland"];
		$flirtname = $_REQUEST["flirtname"];
		$id = $_SESSION["login"];
		
		if(isset($_REQUEST["submit"])) {
			$update = mysql_query("UPDATE benutzerdaten Set email ='".mysql_escape_string($email)."', vorname ='".mysql_escape_string($vorname)."', nachname ='".mysql_escape_string($nachname)."', wohnort ='".mysql_escape_string($wohnort)."', geburtstag ='".mysql_escape_string($geburtstag)."', bundesland ='".mysql_escape_string($bundesland)."', flirtname ='".mysql_escape_string($flirtname)."' WHERE id = '".mysql_escape_string($id)."'");
			
			if(!empty($_REQUEST["passwort1"]) && $_REQUEST["passwort1"] == $_REQUEST["passwort2"]) {
				$update = mysql_query("UPDATE benutzerdaten Set passwort = '".mysql_escape_string .md5($_REQUEST["passwort1"])."' WHERE id = '".$_SESSION["login"]."'");
				$abfrage = "SELECT email, vorname, name, wohnort, geburtstag, bundesland, land, flirtname, geschlecht, FROM benutzerdaten WHERE id = '".$_SESSION["login"]."' LIMIT 0,1";
				$ergebnis = mysql_query($abfrage);
				while($row = mysql_fetch_object($ergebnis)){
					?>

Viele Grüße wünscht ProCoder2025
 
Der Fehler dürfte hier liegen:
PHP:
$update = mysql_query("UPDATE benutzerdaten Set passwort = '".mysql_escape_string .md5($_REQUEST["passwort1"])."' WHERE id = '".$_SESSION["login"]."'");
Das sollte vermutlich so aussehen:
PHP:
$update = mysql_query("UPDATE benutzerdaten Set passwort = '".mysql_escape_string(md5($_REQUEST["passwort1"]))."' WHERE id = '".$_SESSION["login"]."'");
Außerdem solltest du $_REQUEST gegen $_POST oder $_GET tauschen und von mysql_escape_string() auf mysql_real_escape_string() wechseln. Sicherheit sollte auch bei dir groß geschrieben werden.
 
Vielen dank für die schnelle Antwort. Gut zu wissen, das ich noch paar große Sicherheitslücken drin hatte, besten dank. Habe den Code jetzt nochmal umgeschrieben aber der Fehler ist immer noch da. Wieder letzte Zeile.
Ich finde ihn einfach nicht. Tomaten auf den Augen ^^.

PHP:
<?php
session_start();
	if(isset($_SESSION["login"])) { 
		include("db.php");
		include("einstellung_function.php");
		refresh($_SESSION["login"]); 
		
$geburtstag = $_POST["tag"];
$geburtstag .= ".";
$geburtstag .= $_POST["monat"];
$geburtstag .= ".";
$geburtstag .= $_POST["jahr"];
$email = $_POST["email"];
$vorname = $_POST["name"];
$nachname = $_POST["nachname"];
$wohnort = $_POST["wohnort"];
$bundesland = $_POST["bundesland"];
$flirtname = $_POST["flirtname"];
$id = $_SESSION["login"];


		if(isset($_POST["submit"])) {
			$update = mysql_query("UPDATE benutzerdaten Set email ='".mysql_real_escape_string($email)."', vorname ='".mysql_real_escape_string($vorname)."', nachname ='".mysql_real_escape_string($nachname)."', wohnort ='".mysql_real_escape_string($wohnort)."', geburtstag ='".mysql_real_escape_string($geburtstag)."', bundesland ='".mysql_real_escape_string($bundesland)."', flirtname ='".mysql_real_escape_string($flirtname)."' WHERE id = '".mysql_real_escape_string($id)."'");

if(!empty($_POST["passwort1"]) && $_POST["passwort1"] == $_POST["passwort2"]) { 
				$update = mysql_query("UPDATE benutzerdaten Set passwort = '".mysql_real_escape_string(md5($_POST["passwort1"]))."' WHERE id = '".$_SESSION["login"]."'");

		$abfrage = "SELECT email, vorname, name, wohnort, geburtstag, bundesland, land, flirtname, geschlecht, FROM benutzerdaten WHERE id = '".$_SESSION["login"]."' LIMIT 0,1";
		$ergebnis = mysql_query($abfrage);
		while($row = mysql_fetch_object($ergebnis))
		{ 
	
	?>

Viele Grüße aus dem schönen Dresden
 
Zuletzt bearbeitet:
Es ist recht simpel, du hast da 4x
Code:
{
, aber 0x
Code:
}

geöffnete Klammern müssen vor dem Ende des Skriptes wieder geschlossen werden. Du tust das nicht, deswegen kommt ein "unerwartetes Ende des Skriptes"
 
Hallo PHP Cracks,
dieses Jahr bin ich derjenige, der über Google auf diesen threat gestoßen ist. Auch ich bekomme vom Browser folgende Fehlermeldung und hoffe auf eure Hilfe:

Parse error: syntax error, unexpected $end in /homepages/37/d277832359/htdocs/../index.php on line 66

also Fehler in der letzten Zeile von folgendem Code:

<?php get_header(); ?>
<?php
$wp_query->query_vars["cat"] = ‘?;
$wp_query->query_vars["showposts"] = 0;
$wp_query->get_posts();

if (have_posts()) :
?>
<div class="art-content-layout">
<div class="art-content-layout-row">
<?php include (TEMPLATEPATH . '/sidebar1.php'); ?><div class="art-layout-cell art-content">
<?php if (have_posts()) : ?>
<?php
while (have_posts()) :
the_post();
?>
<div class="art-post">
<div class="art-post-body">
<div class="art-post-inner art-article">
<h2 class="art-postheader">
<a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf(__('Permanent Link to %s', 'kubrick'), the_title_attribute('echo=0')); ?>">
<?php the_title(); ?>
</a>
</h2>
<div class="art-postcontent">
<!-- article-content -->
<?php if (is_search()) the_excerpt(); else the_content(__('Read the rest of this entry &raquo;', 'kubrick')); ?>
<?php if (is_page() or is_single()) wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
<!-- /article-content -->
</div>
<div class="cleared"></div>
</div>
<div class="cleared"></div>
</div>
</div>
<?php endwhile; ?>
<?php
$prev_link = get_previous_posts_link(__('Newer Entries &raquo;', 'kubrick'));$next_link = get_next_posts_link(__('&laquo; Older Entries', 'kubrick')); ?>
<?php if ($prev_link || $next_link): ?>
<div class="art-post">
<div class="art-post-body">
<div class="art-post-inner art-article">
<div class="art-postcontent">
<!-- article-content -->
<div class="navigation">
<div class="alignleft"><?php echo $next_link; ?></div>
<div class="alignright"><?php echo $prev_link; ?></div>
</div>
<!-- /article-content -->
</div>
<div class="cleared"></div>
</div>
<div class="cleared"></div>
</div>
</div>
<?php endif; ?>
<?php else : ?>
<h2 class="center"><?php _e('Not Found', 'kubrick'); ?></h2>
<p class="center"><?php _e('Sorry, but you are looking for something that isn’t here.', 'kubrick'); ?></p>
<?php if(function_exists('get_search_form')) get_search_form(); ?>
<?php endif; ?>
</div>
</div>
</div>
<div class="cleared"></div>
<?php get_footer(); ?>


Eigentlich hat WordPress diese Datei erstellt. Könnt ihr den Fehler finden? Die Klammern hab ich alle schon überprüft..
 
Das ist ja Leichenschändung, die hier betrieben wird. Kann den Thread nicht mal jemand locken?

Um deine Frage zu beantworten: Da fehlt ein "endif;". Da ich den Code so schlecht einordnen kann, was da eigentlich getrieben wird, würde ich vorschlagen, du löschst mal die markierte Zeile raus (die ist nämlich doppelt):

PHP:
<?php get_header(); ?>
<?php
$wp_query->query_vars["cat"] = '';
$wp_query->query_vars["showposts"] = 0;
$wp_query->get_posts();

// if (have_posts()) : // Lösch mich******
?>

Das nächste mal bitte nen neuen Thread auf machen. Bist du dir im Klaren darüber, das hier x-tausend Leute jetzt eine Benachrichtigungsmail bekommen haben, dass es eine neue Antwort in dem Thread gibt?
 
Also für mich ist du ein Held! Ich seh da nur Hieroglyphen. Besten Dank! Das war tatsächlich der Fehler.

Bei allen anderen benachrichtigten entschuldige ich mich vielmals für die Belästigung! Kommt nicht wieder vor wenn der threat geschlossen wird. Den Haken bei "erledigt" kann man hier getrost setzen.

Vielen Dank nochmals für die prompte Antwort. Es war mir eine Freude :)
 
Zurück