Fehlermeldung bei "Passwort Vergessen"

MyOOS hat einen Fehler, oder tut nicht das, was Ihr erwartet? Derartige "Unanehmlichkeiten" bitte hier.
Antworten
moonshot
Beiträge: 24
Registriert: 25.04.2009, 16:35

Fehlermeldung bei "Passwort Vergessen"

Beitrag von moonshot »

Hallo,

im Skript http://rolladqi.vs121045.hl-users.com/i ... _forgotten

bekomme ich folgdende Fehlermeldung wenn ich auf "Sie haben Ihr Passwort vergessen..." klicke:

atal error: Can't use method return value in write context in /www/htdocs/rolladqi/usr/local/oos_temp/shop/templates_c/%%29^29B^29B4FC65%%user_password_forgotten.html.php on line 10
http://rolladqi.vs121045.hl-users.com/i ... _forgotten
r23
Beiträge: 2625
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Beitrag von r23 »

Hallo,
Can't use method return value in write context in
Ich mag die Meldungen von PHP wirklich besonders ;) wie die hier. die sagt mir nichts. rein gar nichts... die
hatte ich auf meinen Ssystemen auch noch nicht.
/www/htdocs/rolladqi/usr/local/oos_temp/shop/templates_c/%%29^29B^29B4FC65%%user_password_forgotten.html.php on line 10
http://rolladqi.vs121045.hl-users.com/i ... _forgotten

Smarty erstellt dynamisch eingene Php Skripte in dem Verzeichnis
~/www/htdocs/rolladqi/usr/local/oos_temp/shop/templates_c <- merkwürdiger Pfad... ist dieser richtig?

Is das Verzeichnis für den WebServer und PHP beschreibbar UND lesbar? (vermutlich ja, sonst würde die meldung vermutlich anders lauten..)

Was steht in dem Skript von Smarty in der Ziele 10
/%%29^29B^29B4FC65%%user_password_forgotten.html.php

Ist die Datei für PHP lesbar? (vermutlich ja, sonst würde die Meldung vermutlich anders lauten..)
Welche Smarty Version wird verwendet?

Welche PHP Version?


Die Fehlermeldung und Ihre Behebung habe ich auf die schnelle nicht in den FAQs gefunden
http://www.php-faq.de/ch-errors.html

auch nicht auf php.net
http://de.php.net/results.php?q=Can%27t ... p=all&l=de


Da du ein Update von 1.7.x auf 1.7.14 durchgeführt hast... wie alt ist die von Smarty erstellt Datei
/%%29^29B^29B4FC65%%user_password_forgotten.html.php

kann das Script von einer fehlerhaften alten Smarty Version stammen?
http://www.smarty.net/misc/NEWS

Sorry für die vielen Fragen :( aber die Meldung sagt mir wirklich nichts.

cu

ralf
moonshot
Beiträge: 24
Registriert: 25.04.2009, 16:35

Beitrag von moonshot »

Den Shop hatte ich komplett neu installiert, also kein Update. Smarty hatte ich heute auf 2.6.23 geupdatet. Reicht beim Smarty-Update das bloße Überspielen/Aufspielen der Dateien? Der Shop lief auf PHP 5. Unter PHP 4 bekomme ich folgenden Hinweis auf einen Syntaxfehler:

Parse error: syntax error, unexpected '(', expecting ',' or ')' in /www/htdocs/rolladqi/usr/local/oos_temp/shop/templates_c/%)^29B^29B4FC65%%user_password_forgotten.html.php on line 10

An der Stelle, wo ich eine geschweifte Klammer auf erwarten würde, steht ein Doppelpunkt
Der Datei-Inhalt ist folgender:

Code: Alles auswählen

<?php /* Smarty version 2.6.23, created on 2009-05-14 18:23:25
     	compiled from oos/modules/user_password_forgotten.html */ ?>
<?php require_once(SMARTY_CORE_DIR . 'core.load_plugins.php');
smarty_core_load_plugins(array('plugins' => array(array('function', 'html_href_link', 'oos/modules/user_password_forgotten.html', 15, false),array('function', 'html_image_submit', 'oos/modules/user_password_forgotten.html', 22, false),)), $this); ?>
<!--  $Id: user_password_forgotten.html,v 1.2 2009/02/19 14:26:06 r23 Exp $ -->
	<table border="0" width="100%" cellspacing="0" cellpadding="0">
  	<tr><td><?php echo $this->_tpl_vars['oosPageHeading']; ?>
</td></tr>
  	<tr><td height="10"></td></tr>
<?php if (isset ( $this->_get_super('get','email') ) && ( $this->_get_super('get','email') == 'nonexistent' )): ?>
  	<tr><td class="smallText"><?php echo $this->_tpl_vars['lang']['text_no_email_address_found']; ?>
</td></tr>
<?php endif; ?>
  	<tr><td><table border="0" width="100%" cellspacing="0" cellpadding="3">
    	<tr><td height="15"></td></tr>
    	<tr><td class="heading_title"><?php echo $this->_tpl_vars['lang']['sub_title']; ?>
</td></tr>
    	<tr><td height="10"></td></tr>
    	<tr><td class="main"><?php echo $this->_tpl_vars['lang']['text_info']; ?>
</td></tr>
  	</table></td></tr>
  	<tr>
    	<td><form name="password_forgotten" method="post" action="<?php echo smarty_function_html_href_link(array('modul' => $this->_tpl_vars['modules']['user'],'file' => $this->_tpl_vars['filename']['password_forgotten'],'action' => 'process','connection' => 'SSL'), $this);?>
"><br><table border="0" width="100%" cellspacing="0" cellpadding="3">
      	<tr>
        	<td align="right" class="main"><?php echo $this->_tpl_vars['lang']['entry_email_address']; ?>
</td>
        	<td class="main"><input type="text" name="email_address" maxlength="96" value="<?php echo $this->_get_super('post','email_address'); ?>
"></td>
      	</tr>
      	<tr>
        	<td></td>
        	<td><?php echo smarty_function_html_image_submit(array('image' => "continue.gif",'alt' => $this->_tpl_vars['lang']['image_button_continue']), $this);?>
</td>
      	</tr>
    	</table></form></td>
  	</tr>
  	<tr><td height="15"></td></tr>
  	<tr><td class="main"><?php echo $this->_tpl_vars['lang']['text_new_account_info']; ?>
</td></tr>
  	<tr><td height="15"></td></tr>
  	<tr><td class="main"><a href="<?php echo smarty_function_html_href_link(array('modul' => $this->_tpl_vars['modules']['user'],'file' => $this->_tpl_vars['filename']['create_account'],'connection' => 'SSL'), $this);?>
"><u><b><?php echo $this->_tpl_vars['lang']['text_create_new_account']; ?>
</b></u></a></td></tr>
	</table>
r23
Beiträge: 2625
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Beitrag von r23 »

Hallo,
"Der Shop lief auf PHP 5. Unter PHP 4 bekomme ich folgenden Hinweis auf einen Syntaxfehler:

Parse error: syntax error, unexpected '(', expecting ',' or ')' in /www/htdocs/rolladqi/usr/local/oos_temp/shop/templates_c/%)^29B^29B4FC65%%user_password_forgotten.html.php on line 10"
PHP 4 gibt es nicht mehr. Der Shop läuft aber noch in der veralteten Umgebung.

PHP 5 < Auf basis dieser Infortmation kann ich aber die Fehler von PHP 5 mir nicht ansehen?
http://www.php.net/ChangeLog-5.php#5.2.9

Wenn ich nach einer PHP Version frage erwarte ich die Version x.y.z und wie dies installiert (modul im apche, fastgi oder sonstigen exoten) wurde.
<!-- $Id: user_password_forgotten.html,v 1.2 2009/02/19 14:26:06 r23 Exp $ -->
Welche Theme ist dies?
normalerweise sollte es sein
<!-- $Id: user_password_forgotten.html,v 1.1 2007/06/15 15:05:22 r23 Exp $ -->

Code: Alles auswählen

<?php if (isset ( $this->_get_super('get','email') ) && ( $this->_get_super('get','email') == 'nonexistent' )): ?>
was steht in dem template
~/user_password_forgotten.htm

Code: Alles auswählen

{if isset($smarty.get.email) && ($smarty.get.email eq 'nonexistent')}
für die aktuellen smarty version verwenden wir im templates

Code: Alles auswählen

{if ($smarty.get.email eq 'nonexistent')}
cu

ralf
moonshot
Beiträge: 24
Registriert: 25.04.2009, 16:35

Beitrag von moonshot »

Hallo,

Der Server verwendet PHP 5.2.6 Das verwendete Template ist "oos". Die Änderung der entsprechenden Zeile auf

Code: Alles auswählen

{if ($smarty.get.email eq 'nonexistent')}

hat das Problem behoben! Warum habt ihr intern auf ein älteres Template zurückgewechselt, aber die Version 1.7.14 mit dem neueren, "fehlerhaften" Template ausgeliefert? Auf jeden Fall schon mal vielen Dank für die schnelle Hilfe! Jetzt geht's ja wieder. :)

Grüße,
Peter
r23
Beiträge: 2625
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Beitrag von r23 »

Warum habt ihr intern auf ein älteres Template zurückgewechselt, aber die Version 1.7.14 mit dem neueren, "fehlerhaften" Template ausgeliefert?
Dies ist die FALSCHE Frage. wir liefern die aktuellen Versionen immer mit den aktuellen Templates aus. Dein Problem ist ja kein 1.7.14 Problem.

Du hast ja nur in der 1.7.14 die Smarty Klasse geändert OHNE die notwendige ÄNDERUNGEN an den Templates durchzuführen.

Mit der neuen Smarty Version funktioniert in deinem Templates leider

Code: Alles auswählen

{if (isset($smarty.session.customer_id)) }
z.B. nicht mehr. und muss umgeschrieben werden zu

Code: Alles auswählen

{php}if (isset($_SESSION['customer_id'])) { {/php}

selbstverständlich muss man dann auch if und else entsprechend ändern

aus

Code: Alles auswählen

{else}
wird bei der if abfrage,

Code: Alles auswählen

{php}if (isset($_SESSION['customer_id'])) { {/php}

Code: Alles auswählen

{php} } else { {/php}
und aus

Code: Alles auswählen

{/if]
wird dann.

Code: Alles auswählen

{php} } {/php}
okay - beim versenden des Newsletters kannte ich diese notwenigen Änderungen auch noch nicht.

Auch die Relases Notes von Smarty wurden erst heute entsprechend erweitert.
Super global access from templates are now read-only, so it's no longer possible to do something like {$smarty.session.foo++}
Derartige Überraschungen kann man verhindern wenn man den kostenpflichtigen Update Service verwendet ;) oder auf die nächste
stabile Version wartet... wobei man immer mit überraschungen leben muss... Es ist aber ein fataler Fehler - wenn man jetzt auf Update verzichten
würde.

Danke für den Hinweise, ich habe in der 2.1 bereits die Tempaltes geändert

cu

ralf
moonshot
Beiträge: 24
Registriert: 25.04.2009, 16:35

Beitrag von moonshot »

Achso, d.h. mit dem jetzigen Template stehen eventuell noch ein paar Überraschungen aus (hab noch nicht alles durchgetestet). Auf jeden Fall weiß ich dann schonmal, was dann eventuell noch geändert werden muss. Da der Shop noch nicht online ist, werde ich wohl einfach auf das nächste Update-Release warten. Nicht, dass ich faul wäre oder so ;) , aber ich machen den Shop für einen Kunden und sollte für ihn daher möglichst wirtschaftlich handeln.

[quote='r23',index.php?page=Thread&postID=1046#post1046]Derartige Überraschungen kann man verhindern wenn man den kostenpflichtigen Update Service verwendet ;) oder auf die nächste
stabile Version wartet... wobei man immer mit überraschungen leben muss... Es ist aber ein fataler Fehler - wenn man jetzt auf Update verzichten
würde.
[/quote]Ja, also das müsste mein Kunde entscheiden. Aber es wäre auch zu berücksichtigen, dass ich am Shop kundenspezifische Änderungen eingebracht habe, die dann immer mitgepflegt werden müssten und da weiß ich selbst am besten Bescheid, worauf noch zu achten ist. Falls ich aber mal was entwickle, das der Allgemeinheit nützlich wäre, lassse ich Euch das auf jeden Fall zukommen.
r23
Beiträge: 2625
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Beitrag von r23 »

[quote='moonshot',index.php?page=Thread&postID=1050#post1050]Auf jeden Fall weiß ich dann schonmal, was dann eventuell noch geändert werden muss.[/quote]

In der Version 2.1 habe ich folgende Tempaltes geändert.
http://svn.berlios.de/viewvc/oos?view=rev&revision=246

vergleichbare werde ich vermutlich auch für die 1.7.15 ändern.

Auf basis der Fehlermeldung erlaube ich mir einen Tipp
http://www.oos-shop.de/smarty-use_sub_dirstrue/

cu

ralf
r23
Beiträge: 2625
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Beitrag von r23 »

ps

aus

Code: Alles auswählen

if !isset($smarty.get.option)
wird

Code: Alles auswählen

{php}if (!isset($_GET['option'])) { {/php}
aus

Code: Alles auswählen

{if !isset($smarty.get.pdf)}
wird

Code: Alles auswählen

{php}if (!isset($_GET['pdf'])) { {/php}
r23
Beiträge: 2625
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Beitrag von r23 »

dieses unsägliche php gebastel

Code: Alles auswählen

{php} script {/php}
ist nach einem smarty update auf 2.2.65 nicht mehr nötig.

wir können weiterhin auf PHP Scripte in den Templates verzichten!
moonshot
Beiträge: 24
Registriert: 25.04.2009, 16:35

Beitrag von moonshot »

Das sind ja mal gute Neuigkeiten! Ist ein regelmäßiges Update auf die neueste Smarty-Version aus Sicherheitsgründen dringlich erforderlich? Oder ist der OOS-Shop so programmiert, dass Smarty-Sicherheitslücken in der Regel abgefangen würden?

Grüße, Peter
r23
Beiträge: 2625
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Beitrag von r23 »

Hallo,

updates bei Smarty beseitigen in der Regel kleinere Fehler... Ich empfehle in der Regel immer ein update auf die aktuelle Version.
Leider gab es mit den Super Globals im Mai kleinere Probleme... Daher gab es 2.6.23, 2.6.24 und seit ende Mai 2.6.25.

Wenn wir uns die Unterschiede zwischen der Smarty_compiler.class.php ansehen
http://svn.berlios.de/viewvc/oos/trunk/ ... 279&r2=176

würde ich ein update empfehlen.
Sicherheitsgründen dringlich erforderlich?
Nein - Sicherheitsprobleme sind in Zusammenhang von Smarty nicht bekannt. Man kann sogar die Shicherheit erhöhen.

http://www.smarty.net/manual/de/variable.security.php
Oder ist der OOS-Shop so programmiert, dass Smarty-Sicherheitslücken in der Regel abgefangen würden?
Wenn man das, was der Shop mit Smarty ausliefert, sicher machen möchte, kann man sich
http://htmlpurifier.org/

installieren.

Code: Alles auswählen

    
    $config = HTMLPurifier_Config::createDefault();
    $config->set('Core', 'Encoding', 'ISO-8859-1'); // replace with your encoding
    $config->set('HTML', 'Doctype', 'HTML 4.01 Transitional'); // replace with your doctype
    $purifier = new HTMLPurifier($config);

    $dirty_html = $oSmarty->display($sTheme.'/theme.html');
    $clean_html = $purifier->purify($dirty_html);

oder so ähnlich
http://htmlpurifier.org/

cu

ralf
moonshot
Beiträge: 24
Registriert: 25.04.2009, 16:35

Beitrag von moonshot »

Klasse Tip mit dem HTML-Purifier. Die Integration scheint sehr einfach zu sein. Das werde ich demnächst mal ausprobieren, zwar nicht gleich im OOS-Shop, aber für ein anderes Skript, zu dem ich nicht ganz so viel vertrauen habe und außerdem das HTML etwas ungehobelt ist.

Grüße, Peter
r23
Beiträge: 2625
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Beitrag von r23 »

Hallo,

in der MyOOS Version 2.1.x habe ich zurzeit noch weitere Module und die Quelle der Idee veröffentlicht.

Eingehendes HTML in PHP sicher verarbeiten Text: Arne Blankerts

Auf Basis der heutigen Entwicklungen ist eigentlich ... mehr oder weniger ... die Entscheidung für HTML-Purifier
gefallen.

cu

ralf
Antworten