kepala
Goto Top

PHP Abfrage in URL einbinden

Eine Abfrage soll das Ergebnis in eine URL schreiben.

Hallo,

bin ziemlicher Neuling auf dem Gebit von PHP und benötige Eure Hilfe nachdem ich jetzt schon 3 Tage am Googlen bin.

Ich habe vor mittels einer Abfrage von <Text> und <Radiobuttons> eine URL zu kreieren.

Hier die Abfrage:

<form action="ausgabe.php" method="post">  
  <ul class="pageitem">  
    <li class="bigfield"><input placeholder="Username"  
 span="" class="Username" type="text" /></li>  
    <li class="checkbox"><span class="Plattform">PC</span><input  
 name="PC" type="radio" /> </li>  
    <li class="checkbox"><span class="Plattform">XBox  
360</span><input name="XBOX" type="radio" /> </li>  
    <li class="checkbox"><span class="Plattform">PS  
3</span><input name="PS3" type="radio" /> </li>  
  </ul>
  <div style="top: 180px; height: 41px;" id="rightbutton"><input  
 alt="Description" src="images/los.png" height="50"  
 type="image" width="115" /> </div>  
</form>

Hier das Script:

<?php
$_POST['Username'] = '1';  

$_POST['Plattform'] = '2';   
?>
<div id="textbox">  
<div id="textboxalign"><span class="textboxtitle"></span>  
<p><img src="http://meine-seite.de/$_POST['Plattform'] = '1'/xxx/$_POST['Username']  = '1'.png" alt="Titel" height="200" width="285" /></p>  
</div>

Im Script sollen also der "Username" und die "Plattform" an diesen bestimmten stellen stehen wobei für die Plattform die Textbausteine "PC", "360" oder PS3 eingesetzt werden sollen.

Kann mir da bitte jemand weiterhelfen?

LG Kepala

Content-Key: 175598

Url: https://administrator.de/contentid/175598

Ausgedruckt am: 29.03.2024 um 10:03 Uhr

Mitglied: redder
redder 01.11.2011 um 13:34:28 Uhr
Goto Top
Hallo Kepala,
wo genau liegt das Problem? Funktioniert der erste Teil (das Setzen der POST Variablen)?

Ich sehe dass du beim Script die POST Variablen überschreibst:
$_POST['Username'] = '1';  

$_POST['Plattform'] = '2';   
...oder machst du das nur zu Testzwecken?

Weiter würde ich den Link dann so generieren:
<p><img src="http://meine-seite.de/<?php print($_POST['Plattform']);?>/xxx/<?php print($_POST['Username']); ?>.png" alt="Titel" height="200" width="285" /></p>  

EDIT: Erklärung nochmal dazu:
Du musst wenn du PHP Variablen verwenden willst ihm immer auch die PHP Tags mitgeben.

geht nicht:
<img src="http://meine-seite.de/$variable.png">  


geht:
<img src="http://meine-seite.de/<?php print($variable);?>.png">  

EDIT2: Tippfehler^^
Mitglied: nxclass
nxclass 01.11.2011 um 13:38:11 Uhr
Goto Top
Hier die Abfrage:
... woher hast Du das? - ich wundere mich etwas, bekommst du Da überhaupt sinnvolle Werte zurück ?

<form action="ausgabe.php" method="post">  
	<ul>
		<li><span>Username</span><input type="text" name="Username" value="" /></li>  
		<li><span>PC</span><input value="PC" name="Plattform" type="radio" /></li>  
		<li><span>XBox 360</span><input value="XBOX" name="Plattform" type="radio" /> </li>  
		<li><span>PS 3</span><input value="PS3" name="Plattform" type="radio" /> </li>  
	</ul>
	<div> <input type="submit" name="Los" value="Los" </div>  
</form>

jetzt sollte dein ausgabe.php Skript auch Werte in $_POST erhalten
$lnk = 'http://wasAuchImmer.blub/'. $_POST['Plattform'] . '/foo/bar/' . $_POST['Username'] .'=flopflop.png';  
echo <<<__HTML__
<img src="$lnk" />  
__HTML__;
Mitglied: Kepala
Kepala 01.11.2011 um 13:52:30 Uhr
Goto Top
Dank Dir schonmal für die schnelle Hilfe werds gleich mal testen... Zu der Frage woher ich das habe...: Selbst irgendwie zusammengebastelt ;)

Rückmeldung kommt gleich...

LG Kepala
Mitglied: Kepala
Kepala 01.11.2011 um 14:14:56 Uhr
Goto Top
Also ich habe des mal abgeändert..

Abfrage:
<code type="html>
<ul class="pageitem">
<li class="bigfield"><span>Username</span><input name="Username" value="" type="text" /></li>
<li class="checkbox"><span>PC</span><input name="Plattform" value="PC" type="radio" /></li>
<li class="checkbox"><span>XBox 360</span><input name="Plattform" value="360" type="radio" /> </li>
<li class="checkbox"><span>PS 3</span><input name="Plattform" value="PS3" type="radio" /> </li>
</ul>


Script:

<code type="php>
<div id="textbox">
<div id="textboxalign"><span class="textboxtitle"></span>
<p><img src="http://meine-Seite.de/<?php print($_POST['Plattform']);?>/xxx/<?php print($_POST['Username']); ?>.png" alt="Titel" height="200" width="285" /></p>
</div>


und es geht noch immer nit... face-sad

BTW: Die POST Var´s hab ich nur zum testen überschrieben... Sind jetzt raus...

Edit masterG 23.11.2011 14:51: Codeblöcke formatiert
Mitglied: nxclass
nxclass 01.11.2011 um 14:21:20 Uhr
Goto Top
error_reporting(E_ALL);
var_dump( $_POST );
.. kommt denn überhaupt was an?
Mitglied: Kepala
Kepala 01.11.2011 um 14:23:32 Uhr
Goto Top
ähm... Was sind das jetz für Befehle? wo müssen die hin?

Ich bekomme nur die Seite wie ich sie haben will mit Bild, aber die Eingaben fehlen...
Mitglied: nxclass
nxclass 01.11.2011 um 14:30:25 Uhr
Goto Top
Was sind das jetz für Befehle?
wo müssen die hin?
PHP Befehle - bitte in das php Skript. ... also am besten am Anfang des ausgabe.php Skriptes.

aber die Eingaben fehlen...
... das Formular fehlt oder nur die Werte aus dem Formular? - wenn im HTML Code nur:
<p><img src="http://meine-Seite.de//xxx/.png" alt="Titel" height="200" width="285" /></p>  
.. ankommt, dann scheint $_POST leer zu sein.

error_reporting(E_ALL);
var_dump( $_POST );
var_dump( $_REQUEST );
... am Anfang des Skripts einfügen.
Mitglied: Kepala
Kepala 01.11.2011 um 14:41:45 Uhr
Goto Top
<?php
var_dump( $_POST ); 
var_dump( $_REQUEST );
$_POST['Username'] =  ;  
$_POST['Plattform'] =  ;  
?>
<div id="textbox">  
<div id="textboxalign"><span class="textboxtitle"></span>  
<p><img src="http://meine-seite.de/<?php print($_POST['Plattform']);?>/xxx/<?php print($_POST['Username']); ?>.png" alt="Titel" height="200" width="285" /></p>  

so siehts jetz aus...

Bekomme keine Fehlermeldung oder Ähnliches... Und wo seh ich denn was im HTML Code ankommt? Sehe doch nur die Seite wenn ichs teste... Und es sind immernoch keine Daten drin...
Mitglied: redder
redder 01.11.2011 um 14:55:12 Uhr
Goto Top
Hi,
also die Zeilen
$_POST['Username'] = ;  
$_POST['Plattform'] = ;  
würde ich erstmal ganz rausnehmen.

Wenn du dir den Quellcode anzeigen lässt (i.d.R. STRG + U) solltest du zumindest sehen was an HTML Text bei dir ankommt.

Ich weiß nicht wieviel Ahnung du von POST Variablen hast, aber testest du das auch richtig, indem du zuerst dein Formular abschickst und dann die PHP Seite geöffnet wird?
(Wenn du die PHP Seite direkt öffnest sind die POST Variablen immer leer da nichts übergeben wurde)
Mitglied: Kepala
Kepala 01.11.2011 um 15:07:40 Uhr
Goto Top
Also mit STRG+U bekomme ich den kompletten HTML TEXT angezeigt GENAUSO wie im Editor... Nur bunt ;) Die Zeilen mit var_dump sind hell rosa der rest hat blaue, schwarze und lila Farben. Es kommt bei dem Link zu keiner Änderung.

Wie gehe ich vor?

Ich nehm die *.html datei, öffne sie im Firefox und mache meine Eingaben. Danach erst auf den Submitbutton und dann sollte die ausgabe.php den Rest machen.

Woran könnte es nun noch liegen?
Mitglied: nxclass
nxclass 01.11.2011 um 15:07:59 Uhr
Goto Top
... bei aller liebe aber du musst erst mal die Grundlagen lernen.

Wie redder schon schreibt, überschreibst Du die $_POST Variablen Werte, welche Du auswerten willst.

ich hab mal fix ein Beispiel für dich: (Formular + absenden + anzeige)
<?php
echo <<<__HTML__
<form action="" method="post">  
	<input type="text" name="param" value="wert" />  
	<input type="submit" name="action" value="Senden" />  
</form>
__HTML__;

if (isset($_POST['action']) && $_POST['action']=='Senden') {  
    $parameter = $_POST['param'];  
    echo <<<__HTML__
<hr/>
<span>$parameter</span>
__HTML__;
}
?>
... hoffe ich hab jetzt kein Tippfehler drin.

wo seh ich denn was im HTML Code ankommt
... rechtsklick - 'Seitenquelltext anzeigen' im firefox - es gibt auch nette Erweiterungen für Firefox: Firebug, Webdeveloper
Mitglied: nxclass
nxclass 01.11.2011 um 15:10:08 Uhr
Goto Top
ich nehm die *.html datei, öffne sie im Firefox
.. verdammt nein - das PHP Skript muss auf dem Server ausgeführt werden. zB.
http://localhost/ausgabe.php
wenn file:// da steht ist das falsch
Mitglied: Kepala
Kepala 01.11.2011 um 15:53:01 Uhr
Goto Top
ok ich bastels mal aufm server ein...
Mitglied: Kepala
Kepala 01.11.2011 um 16:37:55 Uhr
Goto Top
So...

Beim Ausführen der ausgabe.php kommt nur folgendes:

array(4) { ["Username"]=> string(8) "Max_Keks" ["Plattform"]=> string(3) "PS3" ["x"]=> string(2) "53" ["y"]=> string(2) "31" } array(8) { ["Username"]=> string(8) "Max_Keks" ["Plattform"]=> string(3) "PS3" ["x"]=> string(2) "53" ["y"]=> string(2) "31" ["__utma"]=> string(53) "90477320.947163394.1291242950.1291242950.1320160775.2" ["__utmb"]=> string(24) "90477320.1.10.1320160775" ["__utmc"]=> string(8) "90477320" ["__utmz"]=> string(102) "90477320.1320160775.2.1.utmcsr=webappbf3.co.de|utmccn=(referral)|utmcmd=referral|utmcct=/www/user.html" }   
Mitglied: nxclass
nxclass 01.11.2011 um 16:42:38 Uhr
Goto Top
Na sehr gut.
array(4) ... ist deine $_POST Variable - und wie Du sehen kannst mit 'Username' und 'Plattform' gefüllt.
Jetzt kannst du die 'var_dump()' Befehle wieder entfernen und deine Ausgabe generieren.
Mitglied: dog
dog 01.11.2011 um 16:45:00 Uhr
Goto Top
Und wenn wir dann auch noch die XSS-Lücke beheben...
Mitglied: Kepala
Kepala 01.11.2011 um 16:49:10 Uhr
Goto Top
welche xss-lücke? wo ist die?
Mitglied: dog
dog 01.11.2011 um 17:10:59 Uhr
Goto Top
http://de.wikipedia.org/wiki/Cross-Site-Scripting

Der Abschnitt "Nicht-persistent oder reflexiv" erklärt dein Problem.
Mitglied: Kepala
Kepala 01.11.2011 um 17:15:30 Uhr
Goto Top
Nein Nein... Das hat mit meinem Projekt eher weniger zu tun... Es funktioniert aber und ich möchte mich bei allen für die Hilfe bedanken...

Wer ein iPhone o.ä. hat und es sich anschauen möchte: www.webappbf3.co.de

Klar wird noch ein wenig feintuning betrieben aber das Grundprog steht...

LG Kepala
Mitglied: nxclass
nxclass 01.11.2011 um 21:18:01 Uhr
Goto Top
Und wenn wir dann auch noch die XSS-Lücke beheben...
welche xss-lücke? wo ist die?
*irgend ein Link den er eh nicht versteht*
Nein Nein... Das hat mit meinem Projekt eher weniger zu tun
... ja - was soll man dazu noch sagen. Kepala bitte teste deinen Code nur lokal auf einem Server !!!

und gibt mal in das 'Username' feld ein:
<script type="text/javascript">alert('Injection');</script>  
und sende das Formular
Mitglied: Kepala
Kepala 02.11.2011 um 11:08:10 Uhr
Goto Top
ähm... Hab nochmal dran gearbeitet und auch auf der Seite die ich abgreife gelesen, dass die sogar wollen dass man drauf zugreift... Allerdings arbeiten die selbst noch an ihrer Seite so dass es hin und wieder zu Fehlern kommen kann...

Auf deren Seite steht nun auch etwas mit nem Abfrage-Link den ich mal mit eingebaut habe:

So stehts auf deren HP (http://bf3stats.com/api):

player
URL: http://api.bf3stats.com/[Platform]/player/
[Platform] can be pc, 360 or ps3
POST parameters:

    player name of a player
    opt is a list of [playerOutputOptions]
    See below for a list of [playerOutputOptions].

Return parameters:

    status can contain pifound, data, notfound or error
    pifound only the index data of the player was found
    data complete data of the player was found
    error is only returned if status is error with one of following error codes:
    invalid_platform, invalid_name


So hab ichs eingebaut:

  <li class="menu"><a href="http://api.bf3stats.com/<?php print($_POST['Plattform']);?>/player/<?php print($_POST['Username']);?> opt=all"><img src="awards_s/m50.png" /><span class="name"align="center">Mehr Infos</span> <span class="comment"></span><span class="arrow"></span></a>  
  </li>

Und das bekomme ich raus:

Error reference: REQ20111102095359.112

TypeError: Cannot read property 'length' of null  
    at [object Object].isNameInvalid (module/bf3/bf3Stats.js:300:9)
    at [object Object].handlePlayer (module/bf3/api.js:394:23)
    at module/bf3/api.js:54:6
    at [object Object].callb (config/global.js:547:22)
    at [object Object].run (config/global.js:558:7)
    at [object Object].prepareSite (module/bf3/api.js:91:5)
    at [object Object].handleModuleCallback (config/request.js:566:9)
    at [object Object]. (config/request.js:604:7)
    at [object Object].finalcallb (module/bf3/module.js:96:10)
    at [object Object].callb (config/global.js:549:8)

Hab ich jetzt wieder irgendeinen Gedankenfehler oder liegt das daran dass die noch ihre Api aufbauen?

LG Kepala

EDIT masterG 23.11.2011 14:53: Bitte Formatierungshilfe beachten!
Mitglied: nxclass
nxclass 02.11.2011, aktualisiert am 18.10.2012 um 18:48:59 Uhr
Goto Top
Das mach mal bitte in ein neues Thema.

TypeError: Cannot read property 'length' of null
POST parameters: ... opt ...
... dann kannst du 'opt' nicht einfach an die URL hängen - da kommen nur GET Parameter dran.

POST Werte mit Php senden: POST-Werte weitergeben