PHP übernimmt aus html keine Variablen

Alles, was PHP betrifft, kann hier besprochen werden.

PHP übernimmt aus html keine Variablen

Postby tramp » 11. January 2007 21:51

Hallo zusammen,
fange gerade an mit php. Habe das neue XAMPP installiert. Einzelne HTML Dateien oder php Dateien mit dem Browser aufzurufen funktioniert. Soll aber aus der HTML Datei eine Variable übernommen werden,, so erscheint zwar der Text, aber ohne den Wert der Variablen. Auf anderen Rechnern mit dem gleichen Browser (Mozilla) funktioniert es ohne Probleme. Ich habe XAMPP Control Panel gestartet, Apache läuft
XAMPP wurde in C:\Apachefriends installiert.
Der Pfad zu htdocs wäre somit
c:\apachefriends\xampp\htdocs

tramp




:?
tramp
 
Posts: 3
Joined: 11. January 2007 21:23

Postby deepsurfer » 11. January 2007 22:11

ohne code beispiele wie du deine Scripte aufbaust ist es schwierig genau zu beschreiben wo der Fehler liegen könnte.

Ich schätze aber das es sich hierbei wieder um die register_globals Handelt die auf den externen Server anders eingestellt sind als bei XAMPP.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby tramp » 11. January 2007 22:29

Vielen Dank für so eine prompte Antwort.
Also, von Registern etc habe ich keine Ahnung.
Ich weis nur, dass XAMPP auf den anderen Rechner genauso insalliert wurde wie auf meinem. Allerdings könnte es sich um eine ältere Version handeln. Meine beiden Dateien sehen wie folgt aus:

Datei ud01.htm
<html>
<body>
Bitte tragen Sie zwei Zahlen ein und senden Sie das Formular ab.<br>
<form action = "ud01.php" method = "post">
Wert 1: <input name = "w1"><p>
Wert 2: <input name = "w2"><p>
<input type = "submit">
<input type = "reset">
</form>
</body>
</html>



Datei ud01.php
<html>
<body>
<?php
$erg = $w1 + $w2;
echo "Die Summe von $w1 und $w2 ist $erg";
?>
</body>
</html>

Als Ergebnis im Browser wird angezeigt:
Die Summe von und ist 0

D.H. Der Browser reagiert auf das Absenden und zeigt die PHP seite an, aber ohne die Variablen zu übernehmen.
Vielleicht muss ich ja nach dem automatischen Installieren von XAMMP noch irgendwo was eintragen. Ich dachte mir nur, dass jetzt alles automatisch installiert wird. Einzeln funktioniert ja auch alles.
Tramp
tramp
 
Posts: 3
Joined: 11. January 2007 21:23

Postby Wiedmann » 11. January 2007 23:22

Datei ud01.htm
Code: Select all
 Wert 1: <input name = "w1"><p>

Datei ud01.php
Code: Select all
 $erg = $w1 + $w2;

Als frage ich mich mal wieder, warum das error_reporting nicht auf E_ALL steht bei deiner eigenen Fehlersuche?

Als 2. solltest du diePHP-Doku lesen um zu sehen wie sowas richtig geht:
http://de.php.net/manual/en/language.va ... ternal.php
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby KingCrunch » 12. January 2007 08:26

Lass mich raten: Das ist ein Code-Beispiel aus einem Lehrbuch?

Datei ud01.htm
Code: Select all
<html>
<body>
Bitte tragen Sie zwei Zahlen ein und senden Sie das Formular ab.<br>
<form action = "ud01.php" method = "post">
Wert 1: <input name = "w1"><p>
Wert 2: <input name = "w2"><p>
<input type = "submit">
<input type = "reset">
</form>
</body>
</html>

Datei ud01.php
Code: Select all
<html>
<body>
<?php
$erg = $w1 + $w2;
echo "Die Summe von $w1 und $w2 ist $erg";
?>
</body>
</html>

Die Verwendung der Variablen direkt ist veraltet, sollte nicht mehr verwendet werden und ist standardmässig auch seit längerem (>PHP 4.2:?:) nicht mehr aktiviert. Und register_globals hat mit Registern auch herzlich wenig zu tun ;)
Wie du nun auf deine Variablen zugreifen kannst, findest du hier.

Hier kann man dann auch erkennen, seit wann das direkte Ansprechen der übertragenen Variableninhalte nicht mehr verfügbar ist ;) Hab darüber auch einen kleinen Kommentar geschrieben ;)
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby newby » 12. January 2007 14:41

bin ich mal so nett und helfe dir:

die htmldatei ist in ordnung, aber die phpdatei muss so aussehen:


<?php

$w1 = $_POST[w1];
$w2 = $_POST[w2];

$erg = $w1 + $w2;
echo("Die Summe von $w1 und $w2 ist $erg");
?>
newby
 
Posts: 105
Joined: 16. July 2006 10:53

Postby tramp » 12. January 2007 17:11

Leute, ihr seid zu nett. Also ich probier alles mal aus und lese mir die Links durch. Wir haben wohl auf den anderen PC's ein älteres XAMPP bzw PHP, da es ja dort funktionierte, nur bei mir zum Üben nicht. Also, vielen Dank für die Hilfe.
Tramp
tramp
 
Posts: 3
Joined: 11. January 2007 21:23

Postby Sascha_78 » 16. February 2007 02:32

Hallo zusammen,

ich bin ein ganz frischer neueunsteiger in php, apache und alles was damit zu tun hat. hab mir gestern xampp-win32-1.5.5-installer.exe installiert und wollte mal ein bisschen php scripten. hab das gleiche open book wie der thread ersteller gefunden (und dadurch auch diesen thread) und stand jetzt auch stundenlang vor dem gleichen problem ... mittlerweile habe ich, man könnte sagen eine lösung gefunden, doch damit kam auch gleich ein neues problem.

meine ursprungs html seite sieht so aus:

Code: Select all
<html>
   <head>
      <title>Übung UD01</title>
   </head>
   <body>
      Bitte tragen Sie zwei Zahlen ein und senden Sie das Formular ab.<br>
      <form action = "test1.php" methode = "post">
         Wert 1: <input name = "xy"><p>
         Wert 2: <input name = "xyx"><p>
       <input type = "submit">
       <input type = "reset">
      </form>
   </body>
</html>


meine empfangs.php sieht mittlerweile nach unzähligen änderungen so aus: (wie ich die daten in variablen bekomme sollte nicht das prob sein, hab einfach x-echo ausgaben durchprobiert, daher die "unordnung")
Code: Select all
<html>
   <body>
      <?php error_reporting(E_ALL);
      
       echo "Sie haben den Wert '".$_GET['xy']."' übergeben.\n <br>";
       echo "Sie haben den Wert '".$_GET['xyx']."' übergeben.\n <br>";
       echo $_GET['xyx'];
       echo "<p>";
       echo "Wert 1 ist " . $_GET['xy'] . ".<br>";
       echo "Wert 2 ist " . $_GET['xyx'] . ". <br>";
       echo "Wert 2 ist " . $_POST['xyx'] . ".<br>";
       echo "Wert 2 ist " . $_REQUEST['xyx'] . ".<br>";
      ?>
   </body>
</html>


und jetzt kommt das problem ... die ausgabe im browser sieht so aus:

URL: http://localhost/work/ub/test1.php?xy=3333&xyx=44444

Sie haben den Wert '3333' übergeben.
Sie haben den Wert '44444' übergeben.
44444

Wert 1 ist 3333.
Wert 2 ist 44444.

Notice: Undefined index: xyx in E:\XAMPP\xampp\htdocs\work\ub\text1.php on line 14
Wert 2 ist .
Wert 2 ist 44444.


Ich kann die daten nicht mit $_POST['###'] auslesen, abfangen oder wie man das auch immer nennt :(
ich hab in der html seite schon methode = "post" in get und wieder zurück in post umgeändert. egal wie ich es schreibe, ich bekomme die daten nur in die php seite mit $_REQUEST oder $_GET aber nicht mit $_POST

würde mich über hilfe sehr freuen :)

Viele Grüße
Sascha

EDIT: arg vergessen, ich hab hier forum etwas gefunden das dieser fehler mit einer neuen "mod_auth_sspi.so" zusammen hängen soll, aber ich hab in der httpd.conf nachgeschaut, das modul ist bei mir garnicht geladen.
(Line 132: #LoadModule sspi_auth_module modules/mod_auth_sspi.so)


Sorry noch en edit ...

ich glaub ich hab die lösung selbst gefunden, es lag wohl an den leerzeichen unter anderem bei
<input name="w1"> und
method="post"> hatte das vorher so geschrieben:
method = "post">

aber kann es das wirklich sein? :roll:

auf alle fälle geht es jetzt auch mit $w2 = $_POST['w2'];
Sascha_78
 
Posts: 2
Joined: 16. February 2007 02:03

Postby taladan » 16. February 2007 12:10

Nein nicht ganz
Code: Select all
      <form action = "test1.php" method "post">


HTML basiert auf Englisch, daher heißt das nicht methode sondern method. Die Abfrage $request solltest du nur nehmen, wenn du wirklich nicht weißt, auf welcher art die Variable übergeben wird. Sonst kann sich eine $_GET['id'] und eine $_POST['id'] zu unangenehmen überraschungen führen. (davon mal abgesehen, das man eine varible nie doppelt benennen darf.
Des weiteren muß man Textabsätze mit <p> anfangen und mit </p> beenden. Die browser können häufig diese differenzen trotzdem richtig ausgleichen, aber manchmal sucht man sich wegen fehlenden abschlusstags einen wolf an der falschen stelle (vor allem bei tabellen die der geordneten darstellung dienen).
Um einen normalen Zeilenumbruch zu erhalten reicht ein <br> aus.
Häufig sitzt das Problem des Computers an immer der selben Stelle, zwischen Monitor und Rückenlehne.
taladan
 
Posts: 44
Joined: 04. February 2007 01:22

Postby Sascha_78 » 16. February 2007 16:31

@ taladan

danke für die antwort. bin echt verblüfft wie sich so ein fehler aufbauen kann -.-

bin eben mal eininge dateien durch gegangen, den ich hatte diese beiden kombis an code ein paar mal getippt und neu gespeichert und auch auf meinen webserver geladen. in den ersten dateien hatte ich method auch richtig, doch da war in der php datei noch das alte system mit dem variablen abfangen drin. ich hab wohl irgendwann durch gedankenlossigkeit ein e an method gehängt. gleichzeitig wurde der code in der php aber "richtiger" ;)

das sich der fehler gelöst hat, war damit wohl eher zufall, ich hab das e wohl beim leerzeichen löschen unbewusst mit entfernt und eben ganz schön gestaunt, das es wirklich in meinem post da oben mit e drin steht, vollkommen unbewusst passiert ... wird mir eine lehre sein ;)

eine frage zur verwendung von $_POST['']; , $_GET['']; usw hab ich allerdings noch.

ich hab "nach dem lehrbuch" noch ein paar übungen gemacht und halt in der php datei immer gleich im <head> die variablen mit $_POST['']; aufgefangen und in variablen gesteckt.
$wert1 = $_POST['wert1'];
$wert2 = $_POST['wert2'];
usw. somit konnte ich alle übungen durcharbeiten so wie sie da standen. macht das sinn oder sollte man die variablen erst dann anlegen wenn man sie auch braucht?

Viele Grüße
Sascha
Sascha_78
 
Posts: 2
Joined: 16. February 2007 02:03

Postby taladan » 16. February 2007 17:13

Nun, normal legt man die dann an wenn man sie braucht. Es ist übrigens egal, ob das nun im head-der im body-er oder sonst wo ist. Du grenzt ja PHP durch die <?php ?> Tags ab. Du mußt den übrigens keine extra Variablen zuordnen. $_POST[''] und $_GET[''] sind schon eine Varible, genauer gesagt Arrays.
Häufig sitzt das Problem des Computers an immer der selben Stelle, zwischen Monitor und Rückenlehne.
taladan
 
Posts: 44
Joined: 04. February 2007 01:22

Postby Wiedmann » 16. February 2007 18:21

nur so nebenbei:
ch hab "nach dem lehrbuch" noch ein paar übungen gemacht

Du solltest dich vielleicht nach einem anderen Lehrbuch umsehen ;-)

(die Technik wie sie da beschrieben wird, ist ja seit 6 Jahren obsolet)

BTW:
Das PHP-Manual hat zu jeder Funktion Beispiele (die zeigen wie es richtig geht) die man sich anschauen und "nachprogrammieren" kann. Ins. den Teil "Teil III. Sprachreferenz" solltest du dir mal durchnehmen.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 2 guests