e-mail als freiwillige Angabe funktioniert nicht vollständig

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Claudi
Mitglied
Beiträge: 9
Registriert: 25.07.2005 13:34

e-mail als freiwillige Angabe funktioniert nicht vollständig

Beitrag von Claudi »

Hallo,

ich habe schon im Forum nach Beiträgen zu diesem Thema gesucht und auch einiges dazu gefunden.

Dank dieser Beiträge habe ich folgendes in der usercp_register.php verändert:

Code: Alles auswählen

if ( empty($username) || empty($new_password) || empty($password_confirm) || empty($email) )
habe ich durch

Code: Alles auswählen

if ( empty($username) || empty($new_password) || empty($password_confirm))
ersetzt und

Code: Alles auswählen

if ( $email != $userdata['user_email'] || $mode == 'register' )
	{
		$result = validate_email($email);
		if ( $result['error'] )
		{
			$email = $userdata['user_email'];

			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
		}
habe ich ganz gelöscht.

Es geht auch soweit alles. Aber ein Problem gibt es:
Wenn ein User sein Profil verändern möchte, erscheint folgene Fehlermeldung:
Could not update users table

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ' user_aim = '', user_yim = '', user_msnm = '', user_attachsig =

UPDATE phpbb_users SET user_email = '', user_icq = '', user_website = '', user_occ = '', user_from = '', user_interests = '', user_sig = '', user_sig_bbcode_uid = '', user_viewemail = , user_aim = '', user_yim = '', user_msnm = '', user_attachsig = , user_allowsmile = , user_allowhtml = , user_allowbbcode = , user_allow_viewonline = , user_notify = , user_notify_pm = , user_popup_pm = , user_timezone = , user_dateformat = '', user_lang = '', user_style = , user_active = 1, user_actkey = '' WHERE user_id =

Line : 513
File : usercp_register.php
Was muss ich anders machen, damit dieser Fehler nicht mehr auftritt?

Danke im Voraus

Claudi
Benutzeravatar
QCO
Mitglied
Beiträge: 708
Registriert: 15.03.2003 12:30
Wohnort: Leipzig

Re: e-mail als freiwillige Angabe funktioniert nicht vollstä

Beitrag von QCO »

Claudi hat geschrieben:

Code: Alles auswählen

if ( $email != $userdata['user_email'] || $mode == 'register' )
	{
		$result = validate_email($email);
		if ( $result['error'] )
		{
			$email = $userdata['user_email'];

			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
		}
habe ich ganz gelöscht.
Wer hat dir das geraten? Damit handelst du dir jede Menge Ärger ein, weil du eine öffnende Klammer löschst, aber die zugehörige schließende stehen lässt. Das hat scheinbar fatale Folgen, denn in dem SQL-Query, der da nicht funktioniert, fehlt die Hälfte.
Überall, wo dort xxx= , steht, müsste hinter dem = eine Zahl oder eine Zeichenkette kommen.
Schnelle direkte Hilfe? Modeinbau? Umfassender, persönlicher Support? Ein individuelles Design/Template?
Ich bin käuflich und löse zu kleinen Preisen Deine Probleme. Anfragen bitte per PN oder Mail.
Claudi
Mitglied
Beiträge: 9
Registriert: 25.07.2005 13:34

Beitrag von Claudi »

Alles, was ich geändert bzw. gelöscht habe, habe ich aus diesem Forum.

Ich habe jetzt im Code
if ( $email != $userdata['user_email'] || $mode == 'register' )
{
$result = validate_email($email);
if ( $result['error'] )
{
$email = $userdata['user_email'];

$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
}
folgenden Absatz gelöscht:
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
Es funktioniert jedenfalls.

Ist das korrekt, was ich gelöscht habe?
Oder gibt es eine bessere Lösung?

Danke
Claudi
Benutzeravatar
QCO
Mitglied
Beiträge: 708
Registriert: 15.03.2003 12:30
Wohnort: Leipzig

Beitrag von QCO »

Claudi hat geschrieben:Es funktioniert jedenfalls.

Ist das korrekt, was ich gelöscht habe?
Oder gibt es eine bessere Lösung?
Wenn es funktioniert, ist es schonmal nicht falsch :D . Das ist ok so.
Ich wollte gestern Abend eingentlich noch Informationen nachschieben, nachdem ich das lokal auf meinem Testserver ausprobiert hatte, aber just da war phpbb.de nicht zu erreichen.

Ich wollte folgendes vorschlagen:
den Abschnitt

Code: Alles auswählen

      $result = validate_email($email);
      if ( $result['error'] )
      {
         $email = $userdata['user_email'];

         $error = TRUE;
         $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
      }
ersetzen durch

Code: Alles auswählen

		if ( !empty($email) )
		{
			$result = validate_email($email);
			if ( $result['error'] )
			{
				$email = $userdata['user_email'];
	
				$error = TRUE;
				$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
			}
		}
Dadurch wird, falls man eine E-Mailadresse angibt, diese auf Gültigkeit überprüft, bei einer leeren Mailadresse aber keine Fehlermeldung ausgegeben.
Claudi
Mitglied
Beiträge: 9
Registriert: 25.07.2005 13:34

Beitrag von Claudi »

Vielen Dank für die Hilfe!

Werde wohl deine bessere Lösung benutzen.

Claudi
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“