Ich hab da ein Modul programmiert aber ...

Gesperrt
ergoliner
Beiträge: 27
Registriert: Mi 6. Jan 2010, 14:15
Kontaktdaten:

Ich hab da ein Modul programmiert aber ...

Beitrag von ergoliner »

das will einfach nicht. Zur Erläuterung: ich habe in PHP 5 für Contenido 4.8.12 folgendes Modul im Outputbereich angelegt:

Code: Alles auswählen

<?php
//Variablendeklaration

$ur = $_SERVER['HTTP_REFERER'];
$ziel1 = 'http://127.0.0.1/ziel_url1.html';
$ziel2 = 'http://127.0.0.1/ziel_url2.html';
$ziel3 = 'http://127.0.0.1/ziel_url3.html';

//Variablen umwandeln
//grundsätzlich vorteilhaft, das Array aus $_SERVER in einen String umwandeln
$ur = serialize($ziel_ur);

//Vergleichen der Variablen
if ($ziel_ur == $ziel1) {
    echo '<img src="../cms/images/msr/wechsel/bild1.png" id="handshake">';  
} elseif ($ziel_ur == $ziel2) {
    echo '<img src="../cms/images/msr/wechsel/bild2.png" id="handshake">';  
} elseif ($ziel_ur == $ziel3) {
    echo '<img src="../cms/images/msr/wechsel/bild3.png" id="handshake">';  
}   else {
    echo '<img src="../cms/images/msr/wechsel/bild4.png" id="handshake">';  
}   
?> 
Das Modul soll, wenn ein User einen Naigationsbutton drückt, auf der rechten Seite ein Bild wechseln. Natürlich hab ich dem Container das Modul zugewiesen und die Bilder sind da wo ich den Pfad auch angegeben haben. Nun weiß ich aber irgendwie nicht weiter :? , der Quellcode sollte doch eigentlich okay sein, oder? Für eure Hilfe danke ich schonmal ganz dolle! :)
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Ich hab da ein Modul programmiert aber ...

Beitrag von Dodger77 »

$ziel_ur ist zum jetzigen Zeitpunkt nicht definiert, so dass ein Vergleich darauf auch nicht funktionieren wird. Das solltest du dir nochmal ansehen.
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Ich hab da ein Modul programmiert aber ...

Beitrag von idea-tec »

versuch es mal so:

Code: Alles auswählen

<?php
//Variablendeklaration

$ziel_ur = $_SERVER['HTTP_REFERER'];
$ziel1 = 'http://127.0.0.1/ziel_url1.html';
$ziel2 = 'http://127.0.0.1/ziel_url2.html';
$ziel3 = 'http://127.0.0.1/ziel_url3.html';

//Variablen umwandeln
//grundsätzlich vorteilhaft, das Array aus $_SERVER in einen String umwandeln
$ziel_ur = serialize($ziel_ur);

//Vergleichen der Variablen
if ($ziel_ur == $ziel1) {
    echo '<img src="../cms/images/msr/wechsel/bild1.png" id="handshake">';  
} elseif ($ziel_ur == $ziel2) {
    echo '<img src="../cms/images/msr/wechsel/bild2.png" id="handshake">';  
} elseif ($ziel_ur == $ziel3) {
    echo '<img src="../cms/images/msr/wechsel/bild3.png" id="handshake">';  
}   else {
    echo '<img src="../cms/images/msr/wechsel/bild4.png" id="handshake">';  
}   
?> 
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
ergoliner
Beiträge: 27
Registriert: Mi 6. Jan 2010, 14:15
Kontaktdaten:

Re: Ich hab da ein Modul programmiert aber ...

Beitrag von ergoliner »

Danke erstmal, Leuts. @Dodger77: doch, die $ziel_ur ist befüllt, denn ohne Contenido funzt es. Die von $_Server zurück gesendete Variable ist ein ARRAY, welches ich mit "serialize" in einen String umwandele. Damit ist dann aber $ziel_ur befüllt und kann mit $ziel1 .. 3 verglichen werden. Oder?

@Karsten: Leider ist das Ergebnis auch hier negativ :cry:
Zuletzt geändert von ergoliner am Do 7. Jan 2010, 15:52, insgesamt 2-mal geändert.
cogito ergo sum - denke ich jedenfalls
ergoliner
Beiträge: 27
Registriert: Mi 6. Jan 2010, 14:15
Kontaktdaten:

Re: Ich hab da ein Modul programmiert aber ...

Beitrag von ergoliner »

Hab ich das Modul vielleicht irgendwie falsch eingebunden??? Muß ich da noch was beachten? Ich habe keine Backend-Eingabe vorgesehen, da muß ich wohl auch im INPUT-Bereich nix eintragen, oder? Mmmmhhhh ... Fragen über Fragen... 8)
cogito ergo sum - denke ich jedenfalls
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Ich hab da ein Modul programmiert aber ...

Beitrag von idea-tec »

also
1.) ist "$_SERVER['HTTP_REFERER'];" KEIN array sondern ein string!!!
DENN: $_SERVER ist das Array!!! => http://www.php.net/manual/en/reserved.v ... server.php
2.) ist in deinem original $ziel_ur NICHT definiert
3.) denn du definierst $ur und serialisierst weiter unten eine leere variable
4.) deswegen können deine durchnummerierten ziel-variablen auch nicht GLEICH einer leeren variablen sein
5.) wäre es möglich, dass du diesen Code aus einem anderen skript ausleihst, in welchem $ziel_ur an anderer Stelle definiert wird?
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
ergoliner
Beiträge: 27
Registriert: Mi 6. Jan 2010, 14:15
Kontaktdaten:

Re: Ich hab da ein Modul programmiert aber ...

Beitrag von ergoliner »

Danke für Deine Antwort, Karsten, aber:

1. Mmmhh, also, ich bin da mal Deinem Link gefolgt und habe mich dank englischer Sprachkenntnisse davon überzeugen können, dass $_SERVER immer ein ARRAY ist (siehe Description, also Beschreibung)
2. muss ich gar nicht $ziel_ur definieren, den diese Variable wird durch $_SERVER definiert, also durch ihren Inhalt (!!!), wie das bei PHP so möglich ist
3. bitte lies nochmal den Quelltext:

Code: Alles auswählen

$ziel_ur = $_SERVER['HTTP_REFERER'];
$ziel1 = 'http://127.0.0.1/ziel_url1.html';
$ziel2 = 'http://127.0.0.1/ziel_url2.html';
$ziel3 = 'http://127.0.0.1/ziel_url3.html';

//Variablen umwandeln
//grundsätzlich vorteilhaft, das Array aus $_SERVER in einen String umwandeln
$ziel_ur = serialize($ziel_ur);
--> $_ziel_ur wird mit dem $_SERVER befüllt und dann mit "$ziel_ur = serialize($ziel_ur);" in einen String umgewandelt.
4. fällt damit weg und
5. ich leihe mir keine Codeschnipsel irgendwo aus, das hab ich selbst geschrieben. Ich werde Dir nachher mal die Beispieldateien mit hmtl posten, dann kannst Du das gerne ausprobieren. Das funzt dort wirklich. :D

Die Antwort ist kein Angriff, aber sollte mein Prob sicherstellen. Ich bin zwar auch kein PHP-Profi, eher ein Amateur, aber abschreiben lernt nix, gelle?
cogito ergo sum - denke ich jedenfalls
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Ich hab da ein Modul programmiert aber ...

Beitrag von idea-tec »

Raffst du es noch? Will DER mir php beibringen <ichhaumichwegvorlachen>

Also Schau dir das hier an: http://194.25.14.46/valletto/test.php
Der Code dazu, damit du selbst rumtesten kannst:

Code: Alles auswählen

<hr /><a href="http://194.25.14.46/valletto/test.php">Link für den http_referer</a>
Klicken um etwas im http_referer zu haben<hr />
<?php
echo '<strong>DEIN Code:</strong><br />';
//Variablendeklaration
$ur = $_SERVER['HTTP_REFERER'];
echo '$ur - Oben: '.$ur.'<br />';
$ziel1 = 'http://127.0.0.1/ziel_url1.html';
$ziel2 = 'http://127.0.0.1/ziel_url2.html';
$ziel3 = 'http://127.0.0.1/ziel_url3.html';

//Variablen umwandeln
//grundsätzlich vorteilhaft, das Array aus $_SERVER in einen String umwandeln
$ur = serialize($ziel_ur);
echo '$ur - nach "serialize": '.$ur.'<br />';
//Vergleichen der Variablen
if ($ziel_ur == $ziel1) {
    echo 'Ziel1<br />';  
} elseif ($ziel_ur == $ziel2) {
    echo 'Ziel2<br />';  
} elseif ($ziel_ur == $ziel3) {
    echo 'Ziel3<br />';  
}   else {
    echo 'Ziel-Else<br />';  
}


echo '<hr /><strong>MEIN Code:</strong><br />';
//Variablendeklaration
echo '$ur - Oben: fällt bei mir weg<br />';
$ziel1 = 'http://194.25.14.46/valletto/test.php';
$ziel2 = 'http://127.0.0.1/ziel_url2.html';
$ziel3 = 'http://127.0.0.1/ziel_url3.html';

//Variablen umwandeln
//grundsätzlich vorteilhaft, das Array aus $_SERVER in einen String umwandeln -> Was soll denn der Scheiß und wofür soll es gut sein?
$ziel_ur = $_SERVER['HTTP_REFERER'];
echo '$ur - nach "serialize": fällt auch weg, da ich direkt einen String in der Variable habe<br />';
//Vergleichen der Variablen
if ($ziel_ur == $ziel1) {
    echo 'Ziel1<br />';  
} elseif ($ziel_ur == $ziel2) {
    echo 'Ziel2<br />';  
} elseif ($ziel_ur == $ziel3) {
    echo 'Ziel3<br />';  
}   else {
    echo 'Ziel-Else<br />';  
}
?>
<hr />und SO sieht dann dein serialisiertes Array "$_Server" aus:<br />
<?php
echo serialize($_SERVER);
?>
<br />oder SO sieht dann dein serialisiertes Array "$_Server['HTTP_REFERER']" aus:<br />
<?php
echo serialize($_SERVER['HTTP_REFERER']);
?>
<br />
Schlag mal hier nach: <a href="http://www.selfphp.de/funktionsreferenz/variablen_funktionen/serialize.php">http://www.selfphp.de/funktionsreferenz/variablen_funktionen/serialize.php</a>
Und dann würde ich vorschlagen gehst du noch einmal in die PHP-Nachhilfe
Dankschreiben werden gerne auch per PN entgegengenommen ;-)
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Re: Ich hab da ein Modul programmiert aber ...

Beitrag von kummer »

hallo ergoliner

$_SERVER ist - wie du richtig bemerkt hast - ein array. allerdings ist $_SERVER['HTTP_REFERER'] ein string. braucht also nicht weiter behandelt zu werden. noch dazu dient serialize für etwas völlig anderes. nämlich zur speicherung von strukturierten daten. diesbezüglich hilft das manual weiter.

zunächst musst du sicherstellen, dass dein server die umgebungsvariable HTTP_REFERER bereit stellt. das ist nämlich nicht immer der fall.

dann kannst du das ganze auch etwas einfacher haben:

Code: Alles auswählen

<?php
$zielUrl = array (
	'http://127.0.0.1/ziel_url1.html' => '<img src="../cms/images/msr/wechsel/bild1.png" id="handshake">',
	'http://127.0.0.1/ziel_url2.html' => '<img src="../cms/images/msr/wechsel/bild2.png" id="handshake">',
	'http://127.0.0.1/ziel_url3.html' => '<img src="../cms/images/msr/wechsel/bild3.png" id="handshake">',
);

if (array_key_exists($_SERVER['HTTP_REFERER'], $zielUrl)) {
	echo $zielUrl[$_SERVER['HTTP_REFERER']];
} else {
	echo '<img src="../cms/images/msr/wechsel/bild4.png" id="handshake">';
}
?>
gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
ergoliner
Beiträge: 27
Registriert: Mi 6. Jan 2010, 14:15
Kontaktdaten:

Re: Ich hab da ein Modul programmiert aber ...

Beitrag von ergoliner »

Ich danke Dir, Andreas, für deine Antwort. Das ist auf jeden Fall noch eleganter. Aber ich hab noch eine kleine Frage: der $_SERVER[HTTP_REFERER] hat dummerweise die URL gespeichert, wo ich herkomme. Aber eigentlich brauche ich die aktuelle URL. Ich hab das also mit $_SERVER[REQUEST_URI] gemacht. Noch funzt das net so, aber ich glaube, das liegt am Pfad. Wenn Du da noch eine Idee hast oder jemand Anderes, laßt es mich bitte wissen. Ich danke euch ganz dolle für eure Zeit ...
cogito ergo sum - denke ich jedenfalls
ergoliner
Beiträge: 27
Registriert: Mi 6. Jan 2010, 14:15
Kontaktdaten:

Re: Ich hab da ein Modul programmiert aber ...

Beitrag von ergoliner »

So, Leute, alles funktioniert! Das ist einfach nur super, ihr habt mir echt dolle geholfen! Danke euch ...
cogito ergo sum - denke ich jedenfalls
Gesperrt