[PHP] - Script wird falsch interpretiert?

Übersicht Andere Programmiersprachen Allgemein

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: [PHP] - Script wird falsch interpretiert?

BeitragDo, Aug 01, 2013 10:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich habe momentan ein Problem mit XAMPP:
ich habe folgende HTML:
Code: [AUSKLAPPEN]
<html>
   <head>
      <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
      <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
      <script>
         $(function() {$("#accordion").accordion();});
      </script>
   
      <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
      <link rel="stylesheet" href="css/base.css" />
   
      <title>PHP Test</title>
   </head>
   <body class="bg">
      <div id="accordion" class="loginscreen">
         <h3>Einloggen</h3>
         <form>
            <p>Bitte logge dich ein:</p>
            <form method="post" action="php/login.php">
               <table style="border: 0px">
                  <tr><td>Benutzername:</td><td><input name="username" type="text"/></td></tr>
                  <tr><td>Passwort:</td><td><input name="password" type="password"/></td></tr>
               </table>
               <center><input type="submit" value="Einloggen"/></center>
            </form>
         </form>
      </div>
   </body>
</html>


sowie folgende login.php, die auch im Ordner "\php" liegt:
Code: [AUSKLAPPEN]
<?php
   $username = $_POST['username'];
   $password = $_POST['password'];
   
   echo("<html><head></head><body>Login-Daten: ". $username .", ". $password ."</body></html>");
?>


beides liegt zusammen in dem "htdocs" Ordner unter XAMPP (In einem Unterordner). Ich starte also xampp_start.exe und öffne das HTML-Dokument. Nachdem ich einen willkürlichen Benutzernamen eingegeben habe und auf "Einloggen" klicke ändert sich die URL zunächst in Zitat:
.../XAMPP/htdocs/ggc-ucp/phptest.htm?username=TestBenutzer&password=Passwort


Weiterhin wird aber nichts angezeigt... Ich weiß nicht woran es liegen könnte, habe bereits Google verwendet, dort sind aber nur Lösungsvorschläge alá "Starte den PC neu, vllt sind die dlls nicht geladen"... (Auch das habe ich schon getan, gleiches Ergebnis)
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Eingeproggt

BeitragDo, Aug 01, 2013 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann dir nicht wirklich sagen was schief läuft, aber es is schon auffällig:

Code: [AUSKLAPPEN]
action="php/login.php"

Code: [AUSKLAPPEN]
/XAMPP/htdocs/ggc-ucp/phptest.htm


Die php Datei wird also nie aufgerufen.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

CO2

ehemals "SirMO"

BeitragDo, Aug 01, 2013 11:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber warum nicht? Sie liegt im genannten Verzeichnis, Name ist ebenfalls richtig geschrieben, etc...

EDIT: Gerade einmal in login.php alles auskommentiert und stattdessen "phpinfo();" eingefügt. Es tut sich trotzdem nichts...
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Xeres

Moderator

BeitragDo, Aug 01, 2013 11:35
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Eingeproggt

BeitragDo, Aug 01, 2013 11:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar dass phpinfo auch nichts ausgibt wenn die php-Datei gar nicht ausgeführt wird.
Ich tippe mal auf XAMPP-Config (Auf der Festplatte: ...\xampp\apache\conf\httpd.conf).
Ist da irgendwas "unbewußt" oder standardmäßig eingestellt mit "DocumentRoot" oder <Directory>? Müsstest dich mal damit auseinandersetzen (googlen nach "xampp httpd.conf" zB)

mfG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Xeres

Moderator

BeitragDo, Aug 01, 2013 11:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde einfach nicht zwei <form> Tags verschachteln.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Midimaster

BeitragDo, Aug 01, 2013 12:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Starte die HTML Datei mal, indem Du als Adresse ...
localhost/ggc-ucp/phptest.htm
...in den Browser eingibst


außerdem startet man Xampp besser mit...

C:\xampp\xampp-control.exe

...Da sieht man ob alles beim Start geklappt hat.
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
 

CO2

ehemals "SirMO"

BeitragDo, Aug 01, 2013 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Es lag in der Tat an den verschachtelten Formen und funktioniert jetzt weitestgehend...

Ich habe das Script nun fortgeführt Code: [AUSKLAPPEN]
<?php
   $username = $_POST['username'];
   $password = $_POST['password'];
   
   echo("Login-Daten: ". $username .", ". $password ."");
   
      echo("<html>");
      echo("<head>");
      
      echo("<script src='http://code.jquery.com/jquery-1.9.1.js'></script>");
      echo("<script src='http://code.jquery.com/ui/1.10.3/jquery-ui.js'></script>");
      echo("<script>$(function() {$('#accordion').accordion();});</script>");
   
      echo("<link rel='stylesheet' href='http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css' />");
      echo("<link rel='stylesheet' href='../css/base.css' />");
      
      echo("<link rel='icon' href='../img/favicon.ico' type='image/x-icon' />");
      
      echo("<title>Statistik von ". $username ."</title>");
      echo("</head>");
      echo("<body>");
      echo("<div id=/"accordion/">");
      
      echo("<h3>Allgemeine Informationen</h3>");
      echo("<table border='0'>");
      echo("<tr><td>Name:</td><td>". $username ."</td></tr>");
      echo("<tr><td>...</td><td>...</td></tr>");
      echo("</table>");
      
      echo("</div>");
      echo("</body>");
      echo("</html>");
?>


Allerdings ist die Ausgabe keine schöne HTML-Seite, sndern eher seltsames Wirrwarr Zitat:
"); echo(""); echo(""); echo(""); echo(""); echo(""); echo(""); echo(""); echo(""); echo(""); echo(""); echo("
"); echo("
Allgemeine Informationen
"); echo(""); echo(""); echo(""); echo("
Name: ". $username ."
... ...
"); echo("
"); echo(""); echo(""); ?>
(Titel der Seite ist übrigens dann Zitat:
Statistik von ". $username ."


Woran könnte das liegen?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Xeres

Moderator

BeitragDo, Aug 01, 2013 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Das liegt wohl daran, dass echo keine Funktion ist und generell keine tolle Idee für eine komplette Ausgabe ist. Schreib einfach normales HTML und benutzte <?php echo $var ?> für variablen. Oder benutze gleich eine template-Sprache.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

CO2

ehemals "SirMO"

BeitragFr, Aug 02, 2013 0:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist, die übertragung der Daten sollte so abgeschirmt vom Nutzer sein wie möglich (Daher auch POST und nicht GET). Diese Eingaben werden dann in der php-Datei mit denen in einer anderen Datei abgeglichen. Stimmen beide überein, so soll ein "Profil" angezeigt werden, sonst soll wieder die Startseite aufgerufen werden.

Ich habe das letzte Mal PHP programmiert vor gut einem Jahr, aus der Zeit habe ich auch noch einige Beispiele wo ich mich daran erinnern kann, dass diese damals einwandfrei liefen (korrekte Ausgabe, etc). Ich habe Sie heute ausprobiert und erhalte den selben Zeichensalat... Ich weiß nicht woran das liegen kann, XAMPP habe ich seit dem nicht mehr upgedatet, also müsste der PHP-Interpreter auf der selben Version sein wie "damals".

ich habe mich jetzt mal nach Alternativen zu echo() umgesehen und print() gefunden, Ergebnis: Das selbe...
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Xeres

Moderator

BeitragFr, Aug 02, 2013 2:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist, dass es eben nicht echo() ist - nur echo ohne die Klammern. Escape Quotes mit \", nicht /" und benutze überall UTF-8.
An dieser Stelle sei nochmal Sublime Text empfohlen - für HTML/php/javascript der beste Editor.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Farbfinsternis

BeitragFr, Aug 02, 2013 9:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuche es mal so: (habe es aufgeräumt)
Code: [AUSKLAPPEN]

<?php
   extract($_POST); // wichtig wenn der Apache korrekt konfiguriert ist
   
   $username = $_POST['username'];
   $password = $_POST['password'];
?>
<html>
<head>
   <title>Statistik von <?=$username;?></title>
   
   <link rel='stylesheet' href='../css/base.css' />
   <link rel='stylesheet' href='http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css' />
   
   <link rel='icon' href='../img/favicon.ico' type='image/x-icon' />
   
   <script src='http://code.jquery.com/jquery-1.9.1.js'></script>
   <script src='http://code.jquery.com/ui/1.10.3/jquery-ui.js'></script>
   <script>
      $(function() {$('#accordion').accordion();});
   </script>
</head>
<body>
   <div id="accordion">
      <h3>Allgemeine Informationen</h3>
      <table border="0">
      <tr>
         <td>Name:</td>
         <td><?=$username;?></td>
      </tr>
      
      <tr>
         <td>
            ...
         </td>
         <td>
            ...
         </td>
      </tr>
      </table>
   </div>
</body>
</html>
 

CO2

ehemals "SirMO"

BeitragFr, Aug 02, 2013 13:45
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Xeres: Ich werde mir mal Sublime Text anschauen, habe bisher immer Aptana Studio oder Notepad++ verwendet.

@ Farbfinsternis: Die Seite sieht schonmal schöner aus Wink Allerdings gibt es immernoch keinen Sinn: Der Titel der Seite ist "Statistik von <?=$username;?>"...
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Xeres

Moderator

BeitragFr, Aug 02, 2013 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Welche php Version läuft denn bei dir?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Farbfinsternis

BeitragFr, Aug 02, 2013 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn das: "Statistik von <?=$username;?>" dort steht, läuft überhaupt kein PHP.

Jolinah

BeitragFr, Aug 02, 2013 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder PHP ist so konfiguriert dass es nicht auf <? ... ?> reagiert, sondern nur auf <?php ... ?>. Wenn das der Fall ist, geht evtl. auch die Kurzform <?= für echo nicht. Dann müsste es <?php echo ...; ?> heissen.

hamZta

Administrator

BeitragSa, Aug 03, 2013 2:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Farbfinsternis hat Folgendes geschrieben:
Versuche es mal so: (habe es aufgeräumt)
Code: [AUSKLAPPEN]

   (...)
   extract($_POST); // wichtig wenn der Apache korrekt konfiguriert ist
   (...)


Ich bin nicht mehr so gut in PHP bewandert, aber die Funktion extract nimmt doch alle Elemente aus $_POST und "entpackt" sie in den aktuellen Namespace. Das auf $_POST anzuwenden wäre doch blanker Wahnsinn (und in diesem Beispiel doch gar nicht notwending?). Oder hat sich da etwas geändert und ich hab's nur verpasst?
Blog.

Farbfinsternis

BeitragSa, Aug 03, 2013 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
hamZta hat Folgendes geschrieben:
Farbfinsternis hat Folgendes geschrieben:
Versuche es mal so: (habe es aufgeräumt)
Code: [AUSKLAPPEN]

   (...)
   extract($_POST); // wichtig wenn der Apache korrekt konfiguriert ist
   (...)


Ich bin nicht mehr so gut in PHP bewandert, aber die Funktion extract nimmt doch alle Elemente aus $_POST und "entpackt" sie in den aktuellen Namespace. Das auf $_POST anzuwenden wäre doch blanker Wahnsinn (und in diesem Beispiel doch gar nicht notwending?). Oder hat sich da etwas geändert und ich hab's nur verpasst?

Wenn "globals = off" definiert ist, ist das die einzige Möglichkeit überhaupt an das Array zu kommen. Das Array wird auch nicht global entpackt sondern nur für die Laufzeit des Scripts und nur für dieses Script.

Jolinah

BeitragSo, Aug 04, 2013 1:16
Antworten mit Zitat
Benutzer-Profile anzeigen
An $_POST, $_SESSION usw. kommt man immer ran. Das "register_globals" ist veraltet. Die Variablen von POST, GET, SESSION etc. können nicht mehr direkt mit $variable angesprochen werden (was dank register_globals möglich, aber sehr unsicher war). Dazu gibt es ja nun die entsprechenden "superglobalen" Arrays $_POST, $_GET, $_SESSION etc.

Code: [AUSKLAPPEN]
echo $_POST['username'];
// statt
echo $username;


Daher finde ich das extract auch nicht sehr sinnvoll. Es macht im Prinzip nur das was register_globals gemacht hatte, in diesem Fall halt nur für $_POST.

http://php.net/manual/en/security.globals.php

hamZta

Administrator

BeitragMi, Aug 07, 2013 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau das, Jolinah. Du hast da was falsch verstanden, Farbfinsternis.

Und das ist deshalb ein großes(!) Sicherheitsrisiko weil böswillige User so deine Variablen überschreiben können (weil extract das per Default zulässt).
Blog.

Neue Antwort erstellen


Übersicht Andere Programmiersprachen Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group