Wie User_ID per Session-Variable zu einer per Wrapper eingebunden PHP-Seite

julia29

Erfahrenes Mitglied
Hallo,

möchte von einer Joomla-Content Seite per Session-Variable die User_ID zu einer per Wrapper eingebunden PHP-Seite, zur dortigen Weiterverwendung, mitschleppen.
Warum per Wrapper, weil ich die Seite im Contentbereich darstellen möchte und habe per Wrapper ein Schattenmenü erstellt.

Code im Joomla-Content
PHP:
{source}
</script>
<HTML>
<HEAD>

</HEAD>
<BODY>

<?php

$ich = &JFactory::getUser();
$a_id = $ich->id;
echo "Ihre Kunden-Nummer lautet.: ";
print_r($a_id);	//ID wird dargestellt

//Aufnahme der Variablen
@session_start();
$_SESSION['abc'] = $a_id;
#echo $_SESSION['abc'] ; 	//ID wird dargestellt
?>
{/source}


Code auf der mit Wrapper eingebundenen PHP-Seite

PHP:
$id22 = getenv("REMOTE_ADDR");
echo "Ihre Verbindungs-ID lautet.....: $id22<br>";		// wird angezeigt

@session_start();
$kdnr = "" . $_SESSION['abc'] . " ";
echo "Ihre Kunden_Nummer lautet...: $kdnr <br>";		// Variable bleibt leer

Die Variable kommt hier nicht mehr an.
Wo liegt mein Fehler?

Würde sich noch eine andere Form der Variablen-Übernahme anbieten?
 
session_start() muss vor der Ausgabe von Daten an den Browser getätigt werden. Da du oben bereits HTML-Code sendest, kann session_start() nicht funktionieren. Probier mal das:

PHP:
<?php
session_start();
?>
<HTML>
<HEAD>

</HEAD>
<BODY>

<?php

$ich = &JFactory::getUser();
$a_id = $ich->id;
echo "Ihre Kunden-Nummer lautet.: ";
print_r($a_id);    //ID wird dargestellt

//Aufnahme der Variablen
$_SESSION['abc'] = $a_id;
#echo $_SESSION['abc'] ;     //ID wird dargestellt
?>

Im übrigen ist es nicht fein, die Fehlermeldungen einfach mit @ zu unterdrücken. In den meisten Fällen haben sie ihre Berechtigung.
 
Vielen Dank für den Tip, aber die
<?php
session_start();
?>
hatte ich bereits ganz am Anfang, vor jeglichen HTML-Code stehen. Dummerweise hatte ich das übersehen und dann vor Ausführung der Variablen nochmals eingesetzt .....

Das ist aber nicht das Problem, nach Korrektur gehts es immer noch nicht. Führe ich diese Variablen-Beispiele nicht aus einem Joomla-Content heraus aus, sondern von einer simplen PHP-Seite (Seite1.php = Variable bilden, Seite2.php = Variable ausgeben), wird alles richtig ausgeführt.

Bilde ich die Variable jedoch im Joomla-Content und will diese an eine normale PHP-Seite übergeben, bleibt die Variable leer. Somit vermute ich ein generelles Problem bei Variablen-Übernahmen aus einem Contentbereich heraus.

Ich bin jetzt auf ein Plugin gestoßen (IncludePHP, http://extensions.joomla.org/extens...iO2k6MTtzOjQ6InBocCciO2k6MjtzOjU6InBocCdzIjt9), was genau das Gegenteil macht. Eine Variable wird von einer PHP-Seite auf eine Joomla-Content-Seite includiert. Dies bräuchte ich genau in die andere Richtung um eine Variable aus einem Content zu übernehmen. Denn als $_Session -Variable komme ich nicht weiter.

Liege ich mit meinen Vermutungen richtig?
Gibt es ein Plugin um eine Variable aus einem Content zu übernehmen?
Beispiel "Export Content", nur brauche ich ja nicht den ganzen Content sondern nur eine Variable.
 
Zuletzt bearbeitet:
Joomla! leert die SESSION bei jeder Ausführung.

Das session_start() im Joomla! QT ist quatsch, das macht das CMS von allein.
 
@Napofis
vielen Dank für den Hinweiß, dann hatte ich das ja schon ganz richtig vermutet.
Hättest du denn für mich auch eine Lösung wie ich ohne Wrapper meine PHP-Seite in den Content-Bereich reinhole und auch noch die Joomla-Variable dorthin übergeben kann?
 
Schreib eine Komponente oder wenn zu aufwendig ist ein Interfaces.

Ja, das habe ich jetzt auch so gemacht, bin dabei aber bei Sourcerer geblieben. Mit Sourcerer habe ich bereits die User-ID ermittelt, die weiterführende php-Datei jetzt mit include eingebunden und die User-ID-Variable an entsprechender Stelle übergeben. Joomla muss ich nunmehr nicht verlassen und die Variable bleibt gefüllt.

Dein Hinweiß, das die Joomla-Variable beim Wechsel zur PHP-Datei geleert wird, war hier entscheidend.

Für alle die ein ähnliches Konstrukt benötigen hier mein Code mit Sourcerer:
PHP:
{source}

<?php

$id22 = getenv("REMOTE_ADDR");
echo "Ihre Verbindungs-ID lautet.....: $id22<br>";

$ich = &JFactory::getUser();
$kdnr = $ich->id;

echo "Ihre Kunden-Nummer lautet..: ";
print_r($kdnr) ;

include 'components/com_merk/merkxxx.php' ;

?>
{/source}

Mit Sourcerer muss man allerdings den PHP-Code bei Kleinigkeiten noch etwas anpassen:
PHP:
</br> zu <br>

$abfrage = "SELECT `tabelle1`.*, `tabelle2`.* FROM `tabelle1` ....";
zu
$abfrage = "SELECT tabelle1.*, tabelle2.* FROM tabelle1  ....";

aber dann klappt alles super.
 
Zurück