GET, Javaskript und Umlaute

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

GET, Javaskript und Umlaute

Beitrag von Martin Truckenbrodt »

Hallo,
ich habe eine Problem mit nicht korrekt Umlauten bei folgendem Problem:
Ich sende den Inhalt eines textarea Formular Feldes mit der GET Methode und der phpBB3 popup Javscript Funktion in ein Popup Fenster.
Dort bekomme ich die Umlaute nicht korrekt angezeigt.

Hat das schon mal jemand hinbekommen?

Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
igorw
Mitglied
Beiträge: 107
Registriert: 02.08.2008 13:04
Wohnort: Winterthur

Beitrag von igorw »

Ich habe den verdacht, dass die variable nicht durch escape() geschickt wurde. Im javascript code.
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo evil<3 (der selbe wie auf phpbb.com ? ),

mittlerweile habe ich es zumindest zum Funktionieren gebracht: http://www.phpbb.com/community/viewtopi ... 5#p7761865

Aber ich werde morgen mal Deine Antwort verfolgen, da es mir immer lieber ist möglichst viel phpBB3 Funktionalität zu nutzen anstatt z.B wie hier mehrerer einzelner PHP Funktionen.

Danke und Gruß Martin
Zuletzt geändert von Martin Truckenbrodt am 19.11.2008 01:28, insgesamt 1-mal geändert.
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
igorw
Mitglied
Beiträge: 107
Registriert: 02.08.2008 13:04
Wohnort: Winterthur

Beitrag von igorw »

Hallo evil<3 (der selbe wie auf phpbb.com ? ),
Korrekt. :)

Deine lösung wird mit speziellen zeichen anderer sprachen nicht funktionieren. Der string ist UTF-8 enkodiert. Und das sollte er bleiben. Das problem ist, das du mit javascript eine URL ansteuern willst, die diesen string beinhaltet.

Nun, in PHP müsste man urlencode() verwenden. Da du das ganze jedoch (soweit ich es richtig verstanden habe) mit javascript machst, musst du escape() verwenden, was die äquivalente funktion ist.

Dadurch werden spezielle zeichen hexadezimal enkodiert (ein ' wird zum beispiel zu %27, man kann das auch in der ASCII tabelle nachschauen).
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo evil<3,
phpbb.com:
na dann werde ich das nächste mal Deutsch mit Dir reden, wenn Du beim Validieren eines meiner MODs mal wieder Probleme feststellst! Für beiden Seiten einfacher, oder? ;)

Code:
Ich habe so was schon erwartet bzw. mir schon gedacht. Ich werde den MOD heute anpassen. Danke für die Infos! Mir ist jetzt auch einiges klarer als vorher.
Vielleicht bekomme ich den MOD die Woche noch fertig. Keine Angst! Wird erst einmal eine Beta Version! ;)

Danke und Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo evil<3,
urlencode() muss ich wohl trotzdem zusätzlich benutzen, oder?

Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
igorw
Mitglied
Beiträge: 107
Registriert: 02.08.2008 13:04
Wohnort: Winterthur

Beitrag von igorw »

Das kommt auf deinen code drauf an. Beides sollte nicht nötig sein, entweder urlencode (PHP) oder escape (JS). Wenn du deinen code postest, lässt sich dir etwas besser helfen.
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo evil<3,
ein Problem sind eventuell enthaltene Leerzeichen. Außerdem müßte ich zumindest noch nl2br drüber lassen.

Hier mal ein bißchen Code:
Die URL fürs PopUp wird hiermit gebildet:

Code: Alles auswählen

							switch ($preview)
							{
								case 'html':
									$template->assign_vars(array(
										'S_PREVIEW_HTML'			=> true,
										'UA_POPUP_PREVIEW_HTML'		=> addslashes(append_sid("{$phpbb_root_path}includes/newsletter/html.$phpEx", 'n=' . $newsletter_id . '&subject=' . $db->sql_escape($subject) . '&message=' . $db->sql_escape($message))),
									));

								break;

								case 'plain':
									$template->assign_vars(array(
										'S_PREVIEW_PLAIN'			=> true,
										'UA_POPUP_PREVIEW_PLAIN'	=> addslashes(append_sid("{$phpbb_root_path}includes/newsletter/plain.$phpEx", 'n=' . $newsletter_id . '&subject=' . $db->sql_escape($subject) . '&message=' . $db->sql_escape($message))),
									));
							}
Hier die HTML Preview Seite:

Code: Alles auswählen

<?php 
/** 
*
* @package Multiple Newsletters Add On
* @version $Id: html.php, v 1.000 2006/07/23 Martin Truckenbrodt Exp$
* @copyright (c) 2006 phpBB Group 
* @license http://opensource.org/licenses/gpl-license.php GNU Public License 
*
*/

define('IN_PHPBB', true);
$phpbb_root_path = '../../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);

include($phpbb_root_path . 'includes/newsletter/constants.'.$phpEx); 
include($phpbb_root_path . 'includes/newsletter/functions.'.$phpEx); 

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('mods/newsletter');

$server_url = generate_board_url();

$email_id 		= request_var('e', 0);
$newsletter_id	= request_var('n', 0);

if ($email_id)
{
	$sql = 'SELECT email_subject, email_text, email_text_bitfield, email_text_uid, email_text_options, user_id FROM ' . NEWSLETTER_EMAIL_TABLE . '
		WHERE email_id =' . $email_id;
	$result = $db->sql_query($sql);
	$email_row = $db->sql_fetchrow($result);
}
else
{
	$bbcode_status	= ($config['allow_bbcode'] && $config['allow_newsletter_bbcode']) ? true : false;
	$url_status		= ($config['allow_newsletter_links']) ? true : false;

	$email_row['email_subject'] = request_var('subject', '', true);
	$email_row['email_text'] = request_var('message', '', true);
	$email_row['user_id'] = $user->data['user_id'];

	generate_text_for_storage($email_row['email_text'], $email_row['email_text_uid'], $email_row['email_text_bitfield'], $email_row['email_text_options'], $bbcode_status, $url_status, '');
}

$email_row['email_subject'] = htmlentities(mb_convert_encoding($email_row['email_subject'],"ISO-8859-1","UTF-8"));
$email_row['email_text'] = htmlentities(mb_convert_encoding($email_row['email_text'],"ISO-8859-1","UTF-8"));

if (!$newsletter_id)
{
	$sql = 'SELECT newsletter_id FROM ' . NEWSLETTER_EMAIL_TABLE . '
		WHERE email_id = ' . $email_id;
	$result = $db->sql_query($sql);
	$row = $db->sql_fetchrow($result);
	$db->sql_freeresult($result);
	if (!$row)
	{
		trigger_error('NO_NEWSLETTER');
	}
	else
	{
		$newsletter_id = $row['newsletter_id'];
	}
}

$sql = 'SELECT newsletter_name, newsletter_public, newsletter_css, newsletter_footer, newsletter_footer_bitfield, newsletter_footer_uid, newsletter_footer_options FROM ' . NEWSLETTER_TABLE . '
	WHERE newsletter_id = ' . $newsletter_id;
$result = $db->sql_query($sql);
$newsletter_row = $db->sql_fetchrow($result);

if (!$newsletter_row)
{
	trigger_error('NO_NEWSLETTER');
}

if (!newsletter_is_viewable($user->data['user_id'], $newsletter_id, $newsletter_row['newsletter_public']))
{
	trigger_error('NEWSLETTER_NOT_ALLOWED');
}

if (!$newsletter_row['newsletter_css'])
{
	$sql = 'SELECT theme_id FROM ' . STYLES_TABLE . '
		WHERE style_id = ' . $user->data['user_style'];
	$result = $db->sql_query($sql);
	$row = $db->sql_fetchrow($result);
	$db->sql_freeresult($result);

	$sql = 'SELECT theme_path FROM ' . STYLES_THEME_TABLE . '
		WHERE theme_id = ' . $row['theme_id'];
	$result = $db->sql_query($sql);
	$row = $db->sql_fetchrow($result);
	$db->sql_freeresult($result);

	$newsletter_row['newsletter_css'] = "<link rel=\"stylesheet\" href=\"" . $server_url . "/styles/" . $row['theme_path'] . "/theme/stylesheet.css \" />
<link rel=\"stylesheet\" href=\"". $server_url . "/styles/" . $row['theme_path'] . "/theme/email.css \" />";
}
else
{
	$newsletter_row['newsletter_css'] = "<link rel=\"stylesheet\" href=\"" . $newsletter_row['newsletter_css'] . "\" />";
}

echo '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" dir=\"' . $user->lang['DIRECTION'] . '\" lang=\"' . $user->lang['USER_LANG'] . '\" xml:lang=\"' . $user->lang['USER_LANG'] . '\">
<head>
<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />
<meta http-equiv=\"content-style-type\" content=\"text/css\" />
<meta http-equiv=\"content-language\" content=\"' . $user->lang['USER_LANG'] . '\" />
<meta http-equiv=\"imagetoolbar\" content=\"no\" />
<title>' . $newsletter_row['newsletter_name'] . '&nbsp;' . $email_row['email_subject'] . '</title>
' . $newsletter_row['newsletter_css'] . '
</head>
<body>
<div class="email">
<h2 class="email">' . $newsletter_row['newsletter_name'] . '</h2>
<h1 class="email">' . $email_row['email_subject'] . '</h1>
<br />
<h2 class="email">' . $user->lang['NEWSLETTER_WELCOME'] . '&nbsp;' . $user->data['username'] . ',</h2>
<br />
<p class="email">' . generate_text_for_display($email_row['email_text'], $email_row['email_text_uid'], $email_row['email_text_bitfield'], $email_row['email_text_options']) . '</p>
<br />
<p class="email">' . generate_text_for_display($newsletter_row['newsletter_footer'], $newsletter_row['newsletter_footer_uid'], $newsletter_row['newsletter_footer_bitfield'], $newsletter_row['newsletter_footer_options']) . '</p>
<br />
' . build_email_sender($email_id, $email_row['user_id']) . '
<p class="email">' . build_email_sender_signature($email_id, $email_row['user_id']) . '</p>
<br />
<p class="email">' . nl2br($config['board_email_sig']) . '</p>
</div>
</body>
</html>';
?>
Im Moment kämpfe ich allerdings mit dem LOG System um die MCP Aktivitäten zu protokollieren.

Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“