[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
xForm redirect bug - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
ovo
Beiträge: 73
Registriert: 13. Okt 2010, 12:56

xForm redirect bug

13. Jul 2011, 23:38

Wenn ich der xForm folgendes Redirect "rex_getUrl(10,null,Array('a'=>1,'b'=>2))" übergebe, werden die angehängten Parameter a und b nicht mit übergeben
Der Grund:

Code: Alles auswählen

class rex_xform_action_redirect extends rex_xform_action_abstract
{
	function execute()
	{
...
		$u = $this->getElement(2);
		$u1 = (int) $u;
		
		if($u == $u1) #die beiden sind gleich und es wird immer eine interne Url gebaut in der die besagten Parameter fehlen.
		{
			// id -> intern article
			$url = rex_getUrl($u,'','',"&");
		}else
		{
			// extern link
			$url = $u;
		}

LG
Stefan

Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

Re: xForm redirect bug

14. Jul 2011, 00:11

ovo hat geschrieben:Wenn ich der xForm folgendes Redirect "rex_getUrl(10,null,Array('a'=>1,'b'=>2))" übergebe,
Versteh ich nicht ganz.. als Eingabe dieser action?

Code: Alles auswählen

		
if($u == $u1) #die beiden sind gleich und es wird immer eine interne Url gebaut in der die besagten Parameter fehlen.
{
  // id -> intern article
  $url = rex_getUrl($u,'','',"&");
}else
{
  // extern link
  $url = $u;
}
$u == $u1 tritt nur ein, wenn man fürs 2. Feld ("Artikel-Id oder Externer Link") eben eine Article_id angegeben hat.. denn ein Integer Wert, den man nach (int) castet bleibt sich gleich.. irgendein string - d.h. eine externe URL, dann eben nicht.. das ist schlicht ein switch um die Eingabe einzuordnen. Wenn es eine interne URL ist, dann wird diese per rex_getUrl aufgerufen, jedoch wird lediglich die article_id übergeben.. ohne Parameter, das ist garnicht vorgesehen:

Code: Alles auswählen

$url = rex_getUrl($u,'','',"&");
hth,
Jan
vg, Jan

ovo
Beiträge: 73
Registriert: 13. Okt 2010, 12:56

Re: xForm redirect bug

14. Jul 2011, 10:01

Hallo Jan,
ja, dachte ich mir auch so wie Du sagst - aber probier mal mein konkretes Beispiel:

$u = 'index.php?article_id=24&clang=0&action=bstlg&usermode=4';
echo $u; // Ausgabe: index.php?article_id=24&clang=0&action=bstlg&usermode=4'

$ul = (int) $u;
echo $ul; // Ausgabe: 0

if ( $u == $ul ) echo p('true');
else echo p('false');
// Ausgabe: true !!!

if ( $u === $ul ) echo p('true');
else echo p('false');
// Ausgabe: false !!!

Ich bin relativ neu in PHP und eigentlich gewohnt, dass der Vergleich von Variablen verschiedener Typen mit einem Compiler- oder spätestens einem Laufzeitfehler quittiert wird.
Anscheinend wird beim Vergleich mit "==" der String automatisch zu einem Int gecastet und dann lautet der Vergleich eben "0 == 0".

So funkts bei mir jedenfalls
class rex_xform_action_redirect extends rex_xform_action_abstract
...
$u = $this->getElement(2);
$u1 = (int) $u;
if($u === $u1 )
{
...
LG
Stefan

Zurück zu „Sonstiges“