Archiv verlassen und diese Seite im Standarddesign anzeigen : [HTML] Auswahlmenü speichern lassen
Hallo verehrtes Dev-Comm,
ich habe folgendes Problemchen: Ich habe auf einer eigenen HTML-Seite folgenden Quelltext:
<form target="_blank" action="http://eu.wowarmory.com/character-sheet.xml">
<big>Realm:</big><br>
<select size="1" style="width: 235px; height: 20px" name="r">
<optgroup label="Deutsch">
<option value="Aegwynn">Aegwynn</option>
<option value="Alexstrasza">Alexstrasza</option>
<option value="Alleria">Alleria</option>
<option value="Aman'Thul">Aman'Thul</option>
<option selected value="Ambossar">Ambossar</option>
<option value="Anetheron">Anetheron</option>
<option value="Antonidas">Antonidas</option>
<option value="Anub'arak">Anub'arak</option>
<option value="Arthas">Arthas</option>
<option value="Arygos">Arygos</option>
<option value="Azshara">Azshara</option>
(is nur ein Ausschnitt)
Jetzt möchte ich das derjenige der seinen Server ausgewählt hat, das auch gespeichert bleibt! Wie stelle ich das an, was muss ich dafür tun?
Das geht mit HTML überhaupt nicht, entweder speicherst du es Clientseitig über Cookies zB mit Javascript oder PHP, oder du speicherst serverseitig die Einstellungen, dann musst du aber den Nutzer identifiezieren können, wofür du auch Cookies und am besten ein Benutzersystem und Login brauchst.
Unter PHP würde das so gehen:
<?php
setcookie('name_der_einstellung', $_POST['name_der_einstellung']);
?>
Dann musst du aber noch daran denken, dem Formularelement den entsprechenden Namen zu verpassen. Zugreifen kannst du dann mit $_COOKIES['name_der_einstellung'].
Ähm.. ja... Danke^^
Ich dachte da an Cookies genau, da ich aber überhaupt keine Ahnung davon habe wäre es nciht schlecht wenn du mir etwas mit dem Quelltext zu Hand gehen würdest :D
Hi,
http://de2.php.net/manual/de/function.setcookie.php
da ist alles ganz genau beschrieben mit Beispielcode. Ich denke, dass wird dir weiter helfen wenn du ein aufmerksamer Leser bist.
Außerdem ist so der Lerneffekt größer. ;)
dead_orc
17.04.2008, 22:29
Solltest du kein PHP verwenden können/wollen, und es nur mit Javascript versuchen zu lösen, so lass dich einfach mal auf SelfHTML (http://de.selfhtml.org/javascript/objekte/index.htm), insbesondere document.cookie (http://de.selfhtml.org/javascript/objekte/document.htm#cookie) verweisen.
Trotz 10mal lesen der Anleitung bekomm ich es nicht hin, kann mir da einer nich das vormachen und ich versuche es zu verstehen? :D
Was ist denn daran nicht zu verstehen? Da stehen doch sogar Beispielcodes.
Viel mehr würdest du von uns auch nicht bekommen.
Zeig doch mal was du da erstellt hast, dann können wir dir weiterhelfen.
Was ist denn daran nicht zu verstehen? Da stehen doch sogar Beispielcodes.
Viel mehr würdest du von uns auch nicht bekommen.
Zeig doch mal was du da erstellt hast, dann können wir dir weiterhelfen.
Ich habe das mal versucht, aber da gab es irgend ne komische Warnung im Quelltext:
<form target="_blank" action="http://eu.wowarmory.com/character-sheet.xml" accept-charset="UTF-8">
<big>Realm:</big><br>
<?php
setcookie('r', $_POST['r']);
?>
<select size="1" style="width: 235px; height: 20px" name="$_COOKIES['r']">
<optgroup label="Deutsch">
<option value="Aegwynn">Aegwynn</option>
<option value="Alexstrasza">Alexstrasza</option>
<option value="Alleria">Alleria</option>
<option value="Aman'Thul">Aman'Thul</option>
<option selected value="Ambossar">Ambossar</option>
<option value="Anetheron">Anetheron</option>
EDIT: Hoppla, ich glaube durch "option selected" is das klar, oder?^^ hatte aber noch keine zeit das auszuprobieren.
Ich habe das mal versucht, aber da gab es irgend ne komische Warnung im Quelltext:
<form target="_blank" action="http://eu.wowarmory.com/character-sheet.xml" accept-charset="UTF-8">
<big>Realm:</big><br>
<?php
setcookie('r', $_POST['r']);
?>
<select size="1" style="width: 235px; height: 20px" name="$_COOKIES['r']">
<optgroup label="Deutsch">
<option value="Aegwynn">Aegwynn</option>
<option value="Alexstrasza">Alexstrasza</option>
<option value="Alleria">Alleria</option>
<option value="Aman'Thul">Aman'Thul</option>
<option selected value="Ambossar">Ambossar</option>
<option value="Anetheron">Anetheron</option>EDIT: Hoppla, ich glaube durch "option selected" is das klar, oder?^^ hatte aber noch keine zeit das auszuprobieren.
Du musst eigentlich nur noch eine Abfrage in jede <option> einbauen:
<option value="Ambossar" <?php if($_COOKIES['r'] == "Ambossar") { "selected" }?> >Ambossar</option>
dead_orc
28.04.2008, 19:54
Du musst eigentlich nur noch eine Abfrage in jede <option> einbauen:
<option value="Ambossar" <?php if($_COOKIES['r'] == "Ambossar") { "selected" }?> >Ambossar</option>
wtf, ist die Syntax korrekt? Ich würde da ja echo "selected"; schreiben, alleine schon, weils sauberer ist. :o
Ähm.. echo gibt doch was aus oder nicht? Ich will selected doch gar nich ausgeben^^
Sondern? Selektieren? dann echo 'selected="selected"' .
Ich glaube du verstehst nicht, dass PHP vor dem versenden der Daten an den Browser ausgeführt wird und dass man mit PHP nicht auf DOM oderso zugreifen kann.
Ich hab das ganze jetzt so gemacht:
<form target="_blank" action="http://eu.wowarmory.com/character-sheet.xml" accept-charset="UTF-8">
<big>Realm:</big><br>
<select size="1" style="width: 235px; height: 20px" name="$_COOKIES['r']">
<?php
setcookie('r', $_POST['r']);
?>
<optgroup label="Deutsch">
<option value="Aegwynn" <?php if($_COOKIES['r'] == "Aegwynn") { echo 'selected="selected"'; }?> >Aegwynn</option>
<option value="Alexstrasza" <?php if($_COOKIES['r'] == "Alexstrasza") { echo 'selected="selected"'; }?> >Alexstrasza</option>
<option value="Alleria" <?php if($_COOKIES['r'] == "Alleria") { echo 'selected="selected"'; }?> >Alleria</option>
Problem: Das Ergebnis der Adressleiste, es landet ein Teil des PHP-Codes dadrin:
http://eu.wowarmory.com/character-sheet.xml?%24_COOKIES%5B%27r%27%5D=Die+Nachtwache&n=hallo
Es sollte jedoch so heißen:
http://eu.wowarmory.com/character-sheet.xml?r=Die+Nachtwache&n=hallo
Dann probier es doch mal mit name="r" statt name="$_COOKIES['r']".
Zudem würd ich zum form noch method="post" hinzufügen.
Dann probier es doch mal mit name="r" statt name="$_COOKIES['r']".
Zudem würd ich zum form noch method="post" hinzufügen.
Okay, das funktioniert! :)
Aber nach schließen des Fenster wird wieder alles zurückgesetzt, das wollte ich mit dem Cookie ja verhindern... (das war aber auch schon vorher so)
Nun ich habe so ne Warnung im Quelltext (komischerweise nur da):
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /var/www/web39/web/wow/beta/index.php:17) in <b>/var/www/web39/web/wow/beta/index.php</b> on line <b>98</b><br />
Dein setcookie() muss an den Anfang der Datei. Und wenn du willst, dass der Cookie auch noch nach dem Schließen des Browsers erhalten bleibt, musst du eine Zeitangabe mitgeben:
<?php
setcookie('r', $_POST['r'], time() + 2592000);
?><form target="_blank" action="http://eu.wowarmory.com/character-sheet.xml" accept-charset="UTF-8">
<big>Realm:</big><br>
<select size="1" style="width: 235px; height: 20px" name="$_COOKIES['r']">
<optgroup label="Deutsch">
<option value="Aegwynn" <?php if($_COOKIES['r'] == "Aegwynn") { echo 'selected="selected"'; }?> >Aegwynn</option>
<option value="Alexstrasza" <?php if($_COOKIES['r'] == "Alexstrasza") { echo 'selected="selected"'; }?> >Alexstrasza</option>
<option value="Alleria" <?php if($_COOKIES['r'] == "Alleria") { echo 'selected="selected"'; }?> >Alleria</option>
2592000 Sekunden entsprechen 30 Tagen. Die Zeit kannst du natürlich auch anpassen.
Mhhh... auch genauso wie du es geschrieben geht es nicht, ich schließe den Browser ja noch nicht einmal, es kommt ein Cookie zu stande (laut Firefox, wird keins erstellt, natürlich vorsichtshalber im IE geprüft, selber Fehler)
Ich habe bewusst aus
<select size="1" style="width: 235px; height: 20px" name="$_COOKIES['r']">
<select size="1" style="width: 235px; height: 20px" name="r">
gemacht, weil sonst $_COOKIES['r'] mit in die Adressleiste kommt und somit kein Ergebnis zu stande kommt. (Aber es geht mit beidem Methoden nicht)
Xardas der Dunkle
28.04.2008, 23:03
So sollte es funktionieren:
<?php
if(count($_POST)) {
setcookie('r', $_POST['r'], time() + 2592000);
}
?><form action="http://eu.wowarmory.com/character-sheet.xml" accept-charset="UTF-8" method="post">
<big>Realm:</big><br>
<select size="1" style="width: 235px; height: 20px" name="r">
<optgroup label="Deutsch">
<option value="Aegwynn" <?php if($_COOKIES['r'] == "Aegwynn") { echo 'selected="selected"'; }?> >Aegwynn</option>
<option value="Alexstrasza" <?php if($_COOKIES['r'] == "Alexstrasza") { echo 'selected="selected"'; }?> >Alexstrasza</option>
<option value="Alleria" <?php if($_COOKIES['r'] == "Alleria") { echo 'selected="selected"'; }?> >Alleria</option>
Moin,
hab ich probiert und geht auch nicht >.<
Müsste nach dem Aufruf oder abschicken, nicht ein Cookie gespeichert werden, wieso wird mir das im Browser nicht aufgeführt (alle anderen werden auch aufgeführt) Hab auch alles erlaubt, so isses ja nicht.
Hat jemand da ne Idee? :confused:
Bei mir funktioniert es mit diesem Code:
<?php
if(isset($_POST['r'])) {
setcookie('r', $_POST['r'], time() + 2592000);
}
?><form action="http://eu.wowarmory.com/character-sheet.xml" accept-charset="UTF-8" method="post">
<big>Realm:</big><br>
<select size="1" style="width: 235px; height: 20px" name="r">
<optgroup label="Deutsch">
<option value="Aegwynn" <?php if($_REQUEST['r'] == "Aegwynn") { echo 'selected="selected"'; }?> >Aegwynn</option>
<option value="Alexstrasza" <?php if($_REQUEST['r'] == "Alexstrasza") { echo 'selected="selected"'; }?> >Alexstrasza</option>
<option value="Alleria" <?php if($_REQUEST['r'] == "Alleria") { echo 'selected="selected"'; }?> >Alleria</option>
wtf, ist die Syntax korrekt? Ich würde da ja echo "selected"; schreiben, alleine schon, weils sauberer ist. :o
Achja... stimmt. Hab lange nichts mehr gemacht, bin aus der Uebung. >.<
Xardas der Dunkle
29.04.2008, 12:41
So jetzt, aber :rolleyes:
<?php
if(isset($_POST['realm'])) {
setcookie('realm', $_POST['realm'], time() + 2592000);
}
?><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<big>Realm:</big><br>
<select size="1" style="width: 235px; height: 20px" name="realm">
<optgroup label="Deutsch">
<option value="Aegwynn" <?php if($_REQUEST['realm'] == "Aegwynn") { echo 'selected="selected"'; }?> >Aegwynn</option>
<option value="Alexstrasza" <?php if($_REQUEST['realm'] == "Alexstrasza") { echo 'selected="selected"'; }?> >Alexstrasza</option>
<option value="Alleria" <?php if($_REQUEST['realm'] == "Alleria") { echo 'selected="selected"'; }?> >Alleria</option>
</optgroup>
</select>
<input type="submit" value="Abschicken">
</form>
So jetzt, aber :rolleyes:
<?php
if(isset($_POST['realm'])) {
setcookie('realm', $_POST['realm'], time() + 2592000);
}
?><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<big>Realm:</big><br>
<select size="1" style="width: 235px; height: 20px" name="realm">
<optgroup label="Deutsch">
<option value="Aegwynn" <?php if($_REQUEST['realm'] == "Aegwynn") { echo 'selected="selected"'; }?> >Aegwynn</option>
<option value="Alexstrasza" <?php if($_REQUEST['realm'] == "Alexstrasza") { echo 'selected="selected"'; }?> >Alexstrasza</option>
<option value="Alleria" <?php if($_REQUEST['realm'] == "Alleria") { echo 'selected="selected"'; }?> >Alleria</option>
</optgroup>
</select>
<input type="submit" value="Abschicken">
</form>
Ich weiß ja nich, das du da zusammengereiht hast, aber mein quelltext isses ganz gewiss nicht mehr...
Was soll "<form action="<?php echo $_SERVER['PHP_SELF']; ?>" ???
und warum ist "r" jetzt auf einmal "realm"...
Fakt ist, das es immer noch nich geht, leider auch nicht von Manni, ich habe kein Plan mehr was ich falsch mache... ich habe diesen <?php Block direkt am Anfang der Datei, scheint trotzdem nichts zu wirken!
Hier ist der PHP-Block
<?php
if(isset($_POST['r'])) {
setcookie('r', $_POST['r'], time() + 2592000);
}
?>
Sowie der Form-Teil:
<form name="ArsenalCharSuche" target="_blank" action="http://eu.wowarmory.com/character-sheet.xml" accept-charset="UTF-8" method="post">
<big>Realm:</big><br>
<select size="1" style="width: 235px; height: 20px" name="r">
<optgroup label="Deutsch">
<option value="Aegwynn" <?php if($_REQUEST['r'] == "Aegwynn") { echo 'selected="selected"'; }?> >Aegwynn</option>
<option value="Alexstrasza" <?php if($_REQUEST['r'] == "Alexstrasza") { echo 'selected="selected"'; }?> >Alexstrasza</option>
<option value="Alleria" <?php if($_REQUEST['r'] == "Alleria") { echo 'selected="selected"'; }?> >Alleria</option>
</optgroup>
</select>
<br>
<big>Name:</big><br>
<input type="text" size="35" name="n">
<br><br>
<input type="submit" value="Suchen">
<input type="reset" value="Zurücksetzen">
</form>
DIe Seite um die es übrigens geht (wo ich immer uploade) http://www.bastilampe.de/wow/beta/
dead_orc
29.04.2008, 16:06
Da liegt also der Fehler... ^^
Die gesamte momentane Methode basiert darauf, dass du das Formular an die selbe Datei sendest, wie die, die das Formular ausgibt. Daher hatte Xardas auch die URL durch <?php echo $_SERVER['PHP_SELF']; ?> ersetzt. So wie es aussieht, hast du aber gar nicht vor, die Formulareingaben selber zu verarbeiten, sodass du wohl doch über JavaScript gehen musst (Stichwörter: onsubmit und document.cookie)
Da liegt also der Fehler... ^^
Die gesamte momentane Methode basiert darauf, dass du das Formular an die selbe Datei sendest, wie die, die das Formular ausgibt. Daher hatte Xardas auch die URL durch <?php echo $_SERVER['PHP_SELF']; ?> ersetzt. So wie es aussieht, hast du aber gar nicht vor, die Formulareingaben selber zu verarbeiten, sodass du wohl doch über JavaScript gehen musst (Stichwörter: onsubmit und document.cookie)
Ahh nein, das darf doch nich war sein xD
ich gucke mal ob ich da was hinkriege, das bezweifel ich zwar und wäre dankbar über eine kleine Nachhilfe ^^
dead_orc
29.04.2008, 16:25
<form ... onsubmit="expires=new Date(); expires.setTime(expires.getTime() + 365*24*60*60); document.cookie='realm='+document.getElementById('realm').value+'; expires='+expires.toGMTString();">
...
<select id="realm" ...>
Untested, unoptimized, and without any implied or explicit warrenty. Just what I hacked together... ;)
Oh, und du brauchst natürlich noch was, was das richtige Feld auswählt. Das musste aber selber machen, ich hab grad keine Zeit mehr. ^^
<form ... onsubmit="expires=new Date(); expires.setTime(expires.getTime() + 365*24*60*60); document.cookie='realm='+document.getElementById('realm').value+'; expires='+expires.toGMTString();">
...
<select id="realm" ...>
Untested, unoptimized, and without any implied or explicit warrenty. Just what I hacked together... ;)
Oh, und du brauchst natürlich noch was, was das richtige Feld auswählt. Das musste aber selber machen, ich hab grad keine Zeit mehr. ^^
Wie genau funktioniert das mit <select id...> ?
Ich mein ich hab doch schon <option> tags mit den realms, muss ich so eine riesen auflistung etwa nochmal machen?
dead_orc
04.05.2008, 15:43
Wie genau funktioniert das mit <select id...> ?
Ich mein ich hab doch schon <option> tags mit den realms, muss ich so eine riesen auflistung etwa nochmal machen?
Nein, du sollst nur dem select Objekt ein id Attribut verpassen, mehr nicht. ;)
Xardas der Dunkle
06.05.2008, 05:40
Andere Möglichkeit:
<?php
if(isset($_POST['realm'])) {
setcookie('realm', $_POST['realm'], time() + 2592000);
header('Location: http://eu.wowarmory.com/character-sheet.xml?r=' . urlencode($_POST['realm']) . '&n=' . urlencode($_POST['name']));
}
?><form action="<?php echo $_SERVER['PHP_SELF']; ?>" target="_blank" method="post">
<dl>
<dt>Realm:</dt>
<dd><select size="1" style="width: 235px; height: 20px" name="realm">
<optgroup label="Deutsch">
<option value="Aegwynn" <?php if($_REQUEST['realm'] == "Aegwynn") { echo 'selected="selected"'; }?> >Aegwynn</option>
<option value="Alexstrasza" <?php if($_REQUEST['realm'] == "Alexstrasza") { echo 'selected="selected"'; }?> >Alexstrasza</option>
<option value="Alleria" <?php if($_REQUEST['realm'] == "Alleria") { echo 'selected="selected"'; }?> >Alleria</option>
</optgroup>
</select></dd>
</dl>
<dl>
<dt>Name:</dt>
<dd><input name="name" type="text"></dd>
</dl>
<input type="submit" value="Abschicken">
</form>
Es währe auch denkbar, dafür zu sorgen das sich nach dem absenden, das Arsenal sich in einem JS-Fenster öffnet.
Danke an alle, jetzt funktioniert es einwandfrei, das Ergebnis kann hier gesehen werden:
http://www.bastilampe.de/index.php?links-s9
Auf das nächste Feature schmeiße ich mich schon drauf xD
Und schon gehts weiter, mein Ziel ist es jetzt das das was in der TextBox eingegeben wurde per Cookie gespeichert und abgerufen wird, ich habe folgendes versuch, allerdings landet der Versuch in der Adressleiste so:
http://www.bastilampe.de/wow/beta/%3C?php%20echo%20$_SERVER['PHP_SELF'];%20?%3E
Quelltext:
<?php
if(isset($_POST['searchitem'])) {
setcookie('searchitem', $_POST['searchitem'], time() + 2592000);
header('Location: http://wow.buffed.de/f=' . urlencode($_POST['searchitem']));
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="./searchframe_style.css">
</head>
<center>
<form name="buffedSuche" action="<?php echo $_SERVER['PHP_SELF']; ?>" target="_blank" method="post">
<input type="text" size="35" name="<?php [$_REQUEST['searchitem']; }">
<br>
<font size="2">
(Suche erfolgt mit <a target="_suche" href="_suche_speedydragon.html"><u>Buffed.de</u></a>)
</font>
<br><br>
<input type="submit" value="Suchen">
<input type="reset" value="Zurücksetzen">
</form>
</center>
</html>
Probiers doch mal mit
<input type="text" size="35" name="<?php echo $_GET['searchitem']; ?>">
statt
<input type="text" size="35" name="<?php [$_REQUEST['searchitem']; }">
Edit: Sry, falsch, sollte, glaub ich, nur so sein:
<input type="text" size="35" name="searchitem" />
drunken monkey
13.05.2008, 21:55
<input type="text" size="35" name="<?php [$_REQUEST['searchitem']; }">
Wie man schon am Syntax-Highlighting erkennt, stimmt in dieser Zeile etwas ganz und gar nicht, bzw. gleich mehrere Sachen. Ich weiß zwar nicht, ob und wie das den Code darüber beeinflussen könnte, aber besser's das auf jeden Fall mal aus.
Ansonsten habe ich aber echt keine Ahnung.
Ihr seid aber fix^^
Leider funktioniert nicht es mit keinen Möglichkeiten, immer die selbe komische Zeile...
Mh.... :/
Xardas der Dunkle
13.05.2008, 22:26
header('Location: http://wow.buffed.de/?f=' . urlencode($_POST['searchitem']));
}
<input type="text" size="35" name="searchitem" value="<?php htmlspecialchars($_REQUEST['searchitem']); ?>" />
Das sollte funktionieren ;)
header('Location: http://wow.buffed.de/?f=' . urlencode($_POST['searchitem']));
}
<input type="text" size="35" name="searchitem" value="<?php htmlspecialchars($_REQUEST['searchitem']); ?>" />
Das sollte funktionieren ;)
:eek: Anscheinend irgendwie doch nich, er zeigt direkt das an was der Wert <value> ist... warum auch immer:
http://www.bastilampe.de/wow/beta/
Xardas der Dunkle
13.05.2008, 22:56
http://www.bastilampe.de/wow/beta/_suche_buffed.html
:rolleyes:
http://www.bastilampe.de/wow/beta/_suche_buffed.html
:rolleyes:
Okay.. das is jetzt ganz schön blöd von mir gewesen^^
:) Ich probier's mal
Xardas der Dunkle
14.05.2008, 05:48
Du solltest nicht den Pfad kürzen, der war schon richtig ... Du sollst die Dateiendung ändern, das hat schon seinen Grund das ich das falsche .html fett makiert habe ... :(
Änder sie auf .php ab und es funzt....
Du solltest nicht den Pfad kürzen, der war schon richtig ... Du sollst die Dateiendung ändern, das hat schon seinen Grund das ich das falsche .html fett makiert habe ... :(
Änder sie auf .php ab und es funzt....
Ja das meinte ich ja^^ Sorry wenn ich mich etwas falsch ausgedrückt :D
Habs gemacht und geändert, der Cookie wird auch richtig mit korrektem Wert erstellt und die Suche geht, ABER nach neuladen der Seite ist der Wert in der Textbox wieder verschwunden :(
Die Seite ist per Frame eingebunden, Quelltext hier:
<?php
if(isset($_POST['searchitem'])) {
setcookie('searchitem', $_POST['searchitem'], time() + 2592000);
header('Location: http://wow.buffed.de/?f=' . urlencode($_POST['searchitem']));
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="./searchframe_style.css">
</head>
<center>
<form name="buffedSuche" action="<?php echo $_SERVER['PHP_SELF']; ?>" target="_blank" method="post">
<input type="text" size="35" name="searchitem" value="<?php htmlspecialchars($_REQUEST['searchitem']); ?>">
<br>
<font size="2">
(Suche erfolgt mit <a target="_suche" href="_suche_speedydragon.php"><u>Buffed.de</u></a>)
</font>
<br><br>
<input type="submit" value="Suchen">
<input type="reset" value="Zurücksetzen">
</form>
</center>
</html>
Xardas der Dunkle
14.05.2008, 14:43
Füg mal:
echo '<pre style="text-align:left;">', print_r($_REQUEST, true), '</pre>';
in den Quellcode ein und poste mal die Ausgabe.
Array
(
[searchitem] => ttt
[realm] => Aegwynn
)
Warning: Cannot modify header information - headers already sent by (output started at /var/www/web39/web/wow/beta/_suche_buffed.php:3) in /var/www/web39/web/wow/beta/_suche_buffed.php on line 9
Warning: Cannot modify header information - headers already sent by (output started at /var/www/web39/web/wow/beta/_suche_buffed.php:3) in /var/www/web39/web/wow/beta/_suche_buffed.php on line 10
(habe nach ttt gesucht)
Xardas der Dunkle
14.05.2008, 15:33
Füg es mal nach dem if(...) { ... } ein. Und poste dann die Ausgabe, nachdem der Cookie gesetzt wurde ;).
Füg es mal nach dem if(...) { ... } ein. Und poste dann die Ausgabe, nachdem der Cookie gesetzt wurde ;).
Array
(
[realm] => Aegwynn
[searchitem] => test
)
is das Ergebnis ;)
also scheint richtig zu sein, nur mit dem Auslesen haperts....
hier nochmal hinweis:
Die Seite oben ist in einem Frame von www.bastilampe.de/wow/beta/
Xardas der Dunkle
14.05.2008, 17:43
Argh, doofer Fehler fällt mir gerade auf xD.
Das echo fehlt ;).
<input type="text" size="35" name="searchitem" value="<?php echo htmlspecialchars($_REQUEST['searchitem']); ?>" />
Argh, doofer Fehler fällt mir gerade auf xD.
Das echo fehlt ;).
<input type="text" size="35" name="searchitem" value="<?php echo htmlspecialchars($_REQUEST['searchitem']); ?>" />
Manchmal is die Lösung so einfach, funktioniert Danke! :A
Wobei das allerdings nicht mehr interessant ist, da der Browser vorher schon umgeleitet wird und er die Seite mit dem ausgefüllten Formular nicht mehr zu sehen bekommt...
Xardas der Dunkle
14.05.2008, 19:46
Wobei das allerdings nicht mehr interessant ist, da der Browser vorher schon umgeleitet wird und er die Seite mit dem ausgefüllten Formular nicht mehr zu sehen bekommt...
?, er verwendet doch an den sinnlosesten Stellen das target-Attribut und das Ergebnis öffnet sich somit auch in einem neuen Fenster/Tab.
?, er verwendet doch an den sinnlosesten Stellen das target-Attribut und das Ergebnis öffnet sich somit auch in einem neuen Fenster/Tab.
Wie so an den sinnlosesten Stellen? Es funktioniert so, wie ich es habe wollte ;)
Eine Anmerkung habe ich noch:
Wenn ich in den Textfeld (searchitem) nach z.b. "Gul'dan" suche und die Seite erneut lade kommt "Gul\\\dan" raus.
(Vemehrt sich nach erneuten veruschen) - Das Ergebnis hingegen geht nur beim ersten mal (is klar, danach sind lauter \\\\ drin)
Was ist daran falsch? DIe Kodierung der Seite (oder des abgeschickten) muss aber unbedingt ISO-8859-1 sein, sonst kommen Sonderzeichen falsch an.
Quelltext:
<?php
if(isset($_POST['searchitem'])) {
setcookie('searchitem', $_POST['searchitem'], time() + 2592000);
header('Location: http://www.buffed.de/?f=' . urlencode($_POST['searchitem']));
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Buffed.de Suche</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="./searchframe_style.css">
</head>
<center>
<form name="buffedSuche" action="<?php echo $_SERVER['PHP_SELF']; ?>" target="_blank" method="post">
<input type="text" size="35" name="searchitem" value="<?php echo htmlspecialchars($_REQUEST['searchitem']); ?>">
<br>
<font size="2">
(Suche erfolgt mit <a target="searchframe" href="_suche_speedydragon.php"><u>Buffed.de</u></a>)
</font>
<br><br>
<input type="submit" value="Suchen">
</form>
</center>
</html>
Xardas der Dunkle
19.05.2008, 18:33
Das sieht stark danach aus, das auf deinem Server die Eigenschaft magic_quotes aktiviert ist.
Dieses wurde in PHP eingeführt um den Benutzer mehr Sicherheit zu garantieren, was aber eher zum gegenteil geführt hat.
Es führt einfach zu schlampiger Programmierung und führt wie bei dir auch zu Fehlern.
Falls du Zugriff auf die php.ini hast, würde ich es gleich direkt deaktivieren:
magic_quotes_gpc = Off
Ein anderer Weg währe es
php_flag magic_quotes_gpc off
in eine .htaccess (!!!Achtung!!!, die Datei heißt so, sie besteht nur aus der Dateiendung!!!) Datei zu schreiben.
Falls das alles nicht funktioniert, bleibt nur folgende Möglichkeit:
<?php
if(@get_magic_quotes_gpc()) {
@set_magic_quotes_runtime(0);
$_GET = array_map('stripslashes', $_GET);
$_POST = array_map('stripslashes', $_POST);
$_COOKIE = array_map('stripslashes', $_COOKIE);
$_REQUEST = array_map('stripslashes', $_REQUEST);
}
mfG
Ich habe das so gemacht, aber es scheint nichts zu wirken, habe ich es eventuell an der falschen Stelle gemacht?
Testen kann man es hier: www.bastilampe.de/wow/beta/
<?php
if(isset($_POST['searchitem'])) {
setcookie('searchitem', $_POST['searchitem'], time() + 2592000);
header('Location: http://www.buffed.de/?f=' . urlencode($_POST['searchitem']));
}
if(@get_magic_quotes_gpc()) {
@set_magic_quotes_runtime(0);
$_GET = array_map('stripslashes', $_GET);
$_POST = array_map('stripslashes', $_POST);
$_COOKIE = array_map('stripslashes', $_COOKIE);
$_REQUEST = array_map('stripslashes', $_REQUEST);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Buffed.de Suche</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="./searchframe_style.css">
</head>
<center>
<form name="buffedSuche" action="<?php echo $_SERVER['PHP_SELF']; ?>" target="_blank" method="post">
<input type="text" size="35" name="searchitem" value="<?php echo htmlspecialchars($_REQUEST['searchitem']); ?>">
<br>
<font size="2">
(Suche erfolgt mit <a target="searchframe" href="_suche_speedydragon.php"><u>Buffed.de</u></a>)
</font>
<br><br>
<input type="submit" value="Suchen">
</form>
</center>
</html>
Xardas der Dunkle
19.05.2008, 20:29
Ich hoffe du hast vorher die anderen Wege probiert, ... das ist nämlich der beschissenste und Performance fressend ste Weg.
Und ja es ist an der falschen Stelle, da war nicht ohne Grund ein <?php mit im Code-Tag, zudem wenn man sich den Code schnipsel ein mal genau anguckt, merkt man das dort Variablen bereinigt werden die bei dir 2 Zeilen darüber verwendet werden ...
http://de3.php.net/manual/de/info.configuration.php#ini.magic-quotes-gpc
Ich hoffe du hast vorher die anderen Wege probiert, ... das ist nämlich der beschissenste und Performance fressend ste Weg.
Und ja es ist an der falschen Stelle, da war nicht ohne Grund ein <?php mit im Code-Tag, zudem wenn man sich den Code schnipsel ein mal genau anguckt, merkt man das dort Variablen bereinigt werden die bei dir 2 Zeilen darüber verwendet werden ...
Ja ich habe die anderen Wege ausprobiert, Problem war:
1) Kein Zugriff auf PHP-Einstellungen
2) Methode 2 hat sich selbst ausgesperrt und Server verweigerte Ordnerzugriff
(also besser nich nochmal probieren)
An Methode 3 mach ich mich gleich nochmal ran und sotiere die $GET z.b raus, da ich diese ja nich brauche oder?
Ich bedanke mich nochmal für die ganze Hilfe recht herzlich, aber.. ein Programmierer kennt keine grenzen.
Also weiter gehts!
Ich habe folgendes vor, ich habe mittels:
<?php
setcookie("searchfrom", "buffed", time() + 2592000);
?>
auf jeder Suchframeseite (jede Suchquelle hat eine eigenen HTML Datei) einen SKript gemacht, wo jeweils der Name der Seite gespeichert wird.
Nun möchte ich das, das in der index.php ausgelesen wird und dann automatisch die passende letzte Suchframe angezeit wird.
Also Quasi eine Abfrage: IF cookie "searchfrom" = "buffed" then
<iframe name="searchframe" height="120px" width="300px" src="./_suche_buffed.php" frameborder="0" allowtransparency="true"></iframe>
als quelltext.
Jedoch bräuchte ich mal wieder etwas Hilfe ;)
Na wer sagst denn: Ich habs selbst hinbekommen! Ich hab ja doch was gelernt ;) aber ich bin noch nich fertig^^
Okay, ich hab ein Problem:
Ich habe jetzt das ganze so gelöst:
<iframe name="searchframe" height="120px" width="300px" src="./_suche_<?php echo htmlspecialchars($_REQUEST['searchfrom']); ?>.php" frameborder="0" allowtransparency="true"></iframe>
Und ich habe am Anfang der Seite ein Cookie gesetzt, Problem ist natürlich, das der User wenn er das erste Mal auf die Seite geht F5 drücken muss, weil anscheinend so schnell der Cookie nicht bemerkt wird... was nun?
Xardas der Dunkle
06.08.2008, 22:33
Und ich habe am Anfang der Seite ein Cookie gesetzt, Problem ist natürlich, das der User wenn er das erste Mal auf die Seite geht F5 drücken muss, weil anscheinend so schnell der Cookie nicht bemerkt wird... was nun?
Der Cookie wird aus einem ganz einfachen Grund nicht bemerkt.
Er wird beim Benutzer nämlich erst angelegt, wenn er die Seite erhalten hat.
Das umgeht man ganz einfach in dem du einen default-Value festlegst:
if(!isset($_REQUEST['searchfrom'])) {
$_REQUEST['searchfrom'] = 'buffed';
}
mfG
Naja, entweder ich bin gerade etwas auf den Holzweg oder ich mach was falsch^^
Ich habe deinen code in die index.php befördert, aber es sieht jetzt so aus, als würde jetzt jedesmal "buffed" gesetzt.
(Cookiesetzung funktioniert, getestet)
-------------------------------------------------------
Allerdings habe ich noch ein weiteres Anliegen:
Ich habe mehrere Popups auf der Seite und ich möchte, das ein nachdem man auf einen Link im Popup geklickt hat, der Popup selbst geschlossen wird.
Habe da was von onclick() gelesen, aber weiteres zu dem was ich will nicht gefunden.
Kommt auf das Art des Popups an, ist es ein richtiges Popup oder nur ein Konstrukt aus HTML und JS? Beim richtigen Popup wärs natürlich window.close(), beim Fake kommt es halt ganz auf den code an... könntest Closebutton.onclick aufrufen.
Xardas der Dunkle
07.08.2008, 13:09
Naja, entweder ich bin gerade etwas auf den Holzweg oder ich mach was falsch^^
Ich habe deinen code in die index.php befördert, aber es sieht jetzt so aus, als würde jetzt jedesmal "buffed" gesetzt.
(Cookiesetzung funktioniert, getestet)
Zeig mal den Code.
Also, die index.php hat folgenden Code:
<?php
if(!isset($_REQUEST['searchfrom'])) {
$_REQUEST['searchfrom'] = 'buffed';
}
?>
<script type="text/javascript">
function datenbank (Adresse)
{
fenster = window.open(Adresse, "Datenbankprojekt", "dependent=yes,location=no,toolbar=no,status=no,menubar=no,resizable=no,width=350,height=250,left=100,top=200");
fenster.focus();
}
</script>
[...]
<iframe name="searchframe" height="120px" width="300px" src="./_suche_<?php echo htmlspecialchars($_REQUEST['searchfrom']); ?>.php" frameborder="0" allowtransparency="true"></iframe>
[...]
<a href="./popup/datenbank.html" onclick="datenbank(this.href); return false"><font color="#85A83D"><b>Datenbankprojekt</b></font></a>
und jede Suchframeseite, hat abhängig von der Suchquelle:
<?php
setcookie("searchfrom", "buffed", time() + 2592000);
?>
Xardas der Dunkle
07.08.2008, 14:33
setcookie("searchfrom", "buffed", time() + 2592000);
Steht das so im Quelltext?, Dann währe es ja logisch das immer buffed im Cookie steht ;).
<font [...]>
Wie ich dieses Tag liebe :\
setcookie("searchfrom", "buffed", time() + 2592000);
Steht das so im Quelltext?, Dann währe es ja logisch das immer buffed im Cookie steht ;).
Nein, du verstehst falsch, jede Suchseite hat das drin stehen.
Die Sucheseite für die Frame namens "_suche_speedydragon.php" hat logischerweise anstatt Buffed was anderes stehen, damit das Cookie überschrieben wird und beim schließen und neustarten des Browsers er anstatt "_suche_buffed.php" dann "_suche_speedydragon.php" verwendet.
Das Ziel ist je nachdem was im Cookie steht, er dann die letztte Suchseite aufruft.
<font [...]>
Wie ich dieses Tag liebe :\[/QUOTE]
Ja, meine Seite is Mischmasch aus CSS und HTML, falls du das meinst *hust*
Xardas der Dunkle
07.08.2008, 15:02
Wie wers wenn du anstatt eines Cookies Sessions verwenden würdest?
http://de3.php.net/manual/de/book.session.php
Ja, meine Seite is Mischmasch aus CSS und HTML, falls du das meinst *hust*
Genau das meine ich, verbrenn diesen Tag und ersetz ihn durch CSS :D
Wie wers wenn du anstatt eines Cookies Sessions verwenden würdest?
http://de3.php.net/manual/de/book.session.php
Genau das meine ich, verbrenn diesen Tag und ersetz ihn durch CSS :D
Sorry, aber ich verstehe nicht. Ich bin soweit das der Cookie gespeichert wird und jetzt wirfst du mir ne ganz neuen Methode an den Kopf, die ich nicht mal ansatzweise verstehe. Warum muss ich jetzt mit Sessions anfangen? Mir ist es egal wie fehlerhaft meine Seite ist oder wie un+bersichtlich, hauptsache sie funktioniert so wie ich es will mit den Mitteln, die ichhabe oder gerade versuche zu üben.
Edit: Habe es jetzt hinbekommen, fehlt nur noch selbstschließende Popups ;)
Edit: Habe es jetzt hinbekommen, fehlt nur noch selbstschließende Popups ;)
Meinen Comment dazu übersehen?
Meinen Comment dazu übersehen?
Nein, ich fummele schon kräftig rum, aber ich weiß nich wo ich ihm genau sagen soll das er, nachdem man auf einen Link im Popup geklickt hat, es schließen soll.
Desweiteren überlege ich, ob ich das noch anders mache.
Auf jeden Fall seid ihr mir eine große Hilfe. :D
Ach ja, ganz vergessen zu sagen, wie es wahrscheinlich auch noch geht. :o Die Popups sind eigentlich immer relative oder absolute positioniert, daher ist es wahrscheinlich, dass du left auf -2000px oder so setzen kannst, oder natürlich auch möglich das display Attribute des Elements, welches das ganze Popup umfasst, auf none zusetzen.
Das sieht stark danach aus, das auf deinem Server die Eigenschaft magic_quotes aktiviert ist.
Dieses wurde in PHP eingeführt um den Benutzer mehr Sicherheit zu garantieren, was aber eher zum gegenteil geführt hat.
Es führt einfach zu schlampiger Programmierung und führt wie bei dir auch zu Fehlern.
Falls du Zugriff auf die php.ini hast, würde ich es gleich direkt deaktivieren:
magic_quotes_gpc = Off
Ein anderer Weg währe es
php_flag magic_quotes_gpc off
in eine .htaccess (!!!Achtung!!!, die Datei heißt so, sie besteht nur aus der Dateiendung!!!) Datei zu schreiben.
Falls das alles nicht funktioniert, bleibt nur folgende Möglichkeit:
<?php
if(@get_magic_quotes_gpc()) {
@set_magic_quotes_runtime(0);
$_GET = array_map('stripslashes', $_GET);
$_POST = array_map('stripslashes', $_POST);
$_COOKIE = array_map('stripslashes', $_COOKIE);
$_REQUEST = array_map('stripslashes', $_REQUEST);
}
mfG
Ich zitier einfach den Beitrag nochmal, denn genau dieses Problem tritt auf einmal (warum auch immer :confused:) jetzt wieder auf.
Der Quelltext von _buffed.php ist folgender:
<?php
if(isset($_POST['searchitem']))
{
setcookie('searchitem', $_POST['searchitem'], time() + 2592000);
header('Location: http://wowdata.buffed.de/?f=' . urlencode($_POST['searchitem']));
setcookie("searchurl", "buffed", time() + 2592000);
}
?>
<?php
if(@get_magic_quotes_gpc()) {
@set_magic_quotes_runtime(0);
$_REQUEST = array_map('stripslashes', $_REQUEST);
$_REQUEST = array_map('stripslashes', $_REQUEST);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Buffed.de Suche</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="./css/searchframe_style.css">
</head>
<body>
<center>
<form name="buffed" action="<?php echo $_SERVER['PHP_SELF']; ?>" target="_blank" method="post">
<input type="text" size="35" name="searchitem" value="<?php echo htmlspecialchars($_REQUEST['searchitem']); ?>">
<br>
<font id="s1">
(Suche erfolgt mit <a target="searchframe" href="_speedydragon.php"><u>Buffed.de</u></a>)
</font>
<p></p>
<input type="submit" value="Suchen">
</form>
</center>
</body>
</html>+
Wenn ich jetzt nach "Mul'dan" suche, wird in der Adressleiste natürlich nach dem hier gesucht:
http://wowdata.buffed.de/?f=Mul\%27dan
Ich weiß nicht weiter, hab schon alles mögliche probiert.
Zugriff auf die PHP-Einstellungen des Servers sind nicht möglich.
hat noch jemand ne Idee?
dead_orc
18.11.2008, 22:52
Dein Problem ist, dass du a) nur $_REQUEST korrigierst, aber $_POST verwendest, und b) die Korrektur erst nach der Weiterleitung durchführst. Der magic_quotes Block muss als allererstes kommen:
<?php
if(@get_magic_quotes_gpc()) {
@set_magic_quotes_runtime(0);
$_GET = array_map('stripslashes', $_GET);
$_POST = array_map('stripslashes', $_POST);
$_COOKIE = array_map('stripslashes', $_COOKIE);
$_REQUEST = array_map('stripslashes', $_REQUEST);
}
if(isset($_POST['searchitem']))
{
setcookie('searchitem', $_POST['searchitem'], time() + 2592000);
header('Location: http://wowdata.buffed.de/?f=' . urlencode($_POST['searchitem']));
setcookie("searchurl", "buffed", time() + 2592000);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Buffed.de Suche</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="./css/searchframe_style.css">
</head>
<body>
<center>
<form name="buffed" action="<?php echo $_SERVER['PHP_SELF']; ?>" target="_blank" method="post">
<input type="text" size="35" name="searchitem" value="<?php echo htmlspecialchars($_REQUEST['searchitem']); ?>">
<br>
<font id="s1">
(Suche erfolgt mit <a target="searchframe" href="_speedydragon.php"><u>Buffed.de</u></a>)
</font>
<p></p>
<input type="submit" value="Suchen">
</form>
</center>
</body>
</html>
So sollte es gehen.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.