php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.02.2011, 22:01  
Aichix3
Gast
 
Beiträge: n/a
Standard [Erledigt] Form gibt immer eine leere $_POST Array zurück

Ich bin gerade dabei, ein auf PHP basierendes Browsergame zu entwickeln, scheitere im Moment aber am Login. Die Login Form soll die Daten über method='post' mitgeben, die Action verweist auf sich selbst. Beim Auswerten der in die Textboxen eingegebenen Daten mit print_r($_POST) wird mir lediglich Array ( ) ausgegeben. Was ich daran nicht verstehe, ist, dass der Code perfekt funktioniert, sobald ich die method auf get setze und $_GET ausgeben lasse. Da es allerdings ungünstig ist, Login Daten über eine URL zu übertragen, wende ich mich mit diesem Problem an euch. Getestet habe ich das Ganze mit XAMPP und Bplaced, bei beiden das gleiche Ergebnis wie bereits beschrieben.

Code:

index.php
PHP-Code:
<?php
session_start
();
require_once(
"Pages.php");
?>

<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />

<script type="text/javascript" src="Script.js"> </script> <script type="text/javascript">
</script> 
</head> <body>

<?php $False Connect("http://localhost/Test");
echo 
$_SESSION['name']." - ".$SESSION['password']." - ".$_SESSION['Login']."<br />"?>

<?php

if ($False == 2) {
echo 
"Faild: <br />".$_POST['user']."  - ".$_SESSION['name']."<br />".$_POST['password']." - ".$_SESSION['password']."<br />"print_r($_POST); echo "<br />";
}
?>

</body> </html>
Pages.php
PHP-Code:
<?php
function Connect($Link) { mysql_connect('localhost''root''')
or die(
"<font color='#CC0066'>Error: The server could not be accessed!<br />" mysql_error() . "</font>");

mysql_select_db("aichi")
or die(
"<font color='#CC0066'>Error: The database could not be accessed! <br />"mysql_error() . "</font>");

if (
$_GET['Logout'] == "1") {
session_destroy(); }

if (
$_SESSION['Login'] == false) { 
 
$_SESSION['password'] = md5($_POST['password']);
 
$_SESSION['name'] = $_POST['user'];
}

$user mysql_query("SELECT * FROM `User` WHERE `Name` = '".$_SESSION['name']."' AND `Password` = '".$_SESSION['password']."'");
$data mysql_fetch_row($user);
if (!
$data) {
echo 
"<form method='post' action='".$Link."?Action=Login'>
<input name='user' type='Text' id='Nickname'  size='17' maxlength='16' value='Nickname' onfocus='HideNickname();' />
<input name='password' id='Password' type='text' size='17' maxlength='16' value='Password' onfocus='HidePassword();' />
<hr width='200' /> <input type='Submit' value='Login'>
</form>"
;

if (
$_GET['Action'] == "Login") {return 2; }

else
{
$_SESSION['Login'] = true;
echo 
"Hello ".$data[1]."!<br />
<input type='button' value='Logout' onclick='Open(\""
.$Link"?Logout=1\")'> "; }
}
?>
Script.js
Code:
function HideNickname() { if (document.getElementById('Nickname').value == 'Nickname')
{ document.getElementById('Nickname').value = ''; } }
function HidePassword() { if (document.getElementById('Password').type == 'text') { document.getElementById('Password').value = ''; document.getElementById('Password').type = 'password'; } }
function Open(Link) { window.location = Link; }
Angehängte Dateien
Dateityp: zip Test.zip (2,5 KB, 9x aufgerufen)

Geändert von Aichix3 (24.02.2011 um 22:40 Uhr).
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.02.2011, 22:09  
Erfahrener Benutzer
 
Registriert seit: 03.03.2010
Beiträge: 221
PHP-Kenntnisse:
Fortgeschritten
RustyXXL befindet sich auf einem aufstrebenden Ast
Standard

Code der schwer zu schreiben war sollte gefälligst auch schwer zu lesen sein....
RustyXXL ist offline   Mit Zitat antworten
Alt 24.02.2011, 22:28  
Erfahrener Benutzer
 
Registriert seit: 13.05.2009
Beiträge: 1.164
PHP-Kenntnisse:
Fortgeschritten
dennis81 befindet sich auf einem aufstrebenden Ast
Standard

lol, also wirklich. Ich habe ja gedacht ist wäre ein copy/paste Fehler hier im Forum, aber der "echte" Code sieht ja auch so aus...

Pass das doch bitte noch mal an, so erkennt man überhaupt nichts.
__________________
Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)
dennis81 ist offline   Mit Zitat antworten
Alt 24.02.2011, 22:45  
Aichix3
Gast
 
Beiträge: n/a
Standard

Ich code auf diese Weise lieber als einen Umbruch für jede geschweifte Klammer und jeden Befehl zu machen. Unter Adobe Dreamweaver ist das Ganze auch noch halbwegs lesbar.
So, hab den Code im ersten Post neu formatiert.
  Mit Zitat antworten
Alt 24.02.2011, 22:54  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Problem absolut nicht nachvollziehbar: Wenn ich deinen Code aus der zip-Datei nehme, den Datenbank-Kram rauswerfe, und dann das Formular abschicke - dann zeigt er mir auf der Folgeseite ganz klar die per POST übergebenen Parameter user und password an.

Stelle bitte erst mal das error_reporting auf E_ALL und display_errors auf 1, damit PHP dich darauf hinweisen kann, wo du überall auf Werte zugreifst, die im Zweifelsfall gar nicht vorhanden sind.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 25.02.2011, 08:03  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

außerdem ...

PHP-Code:
if ($_GET['Action']=="Login") return 2;

....


$FALSE=Connect (.....);
if (
$FALSE==2)
    echo 
"Fail"
wenn das mal nicht ein logischer Fehler ist ....

Genau in dem Augenblick, wo dein Formular aus der Connect-Funktion erfolgreich abgeschickt wird, meldest du 2 zurück und dein Hauptprogramm geht von einem fehlerhaften Login aus .....

im übrigen halte ich es für keine gute Idee, die eventuell übergebenen Post-Daten für User UND Passwort gleich in der Session zu speichern - dort sollte nur bei erfolgreichem Login zum Beispiel die User ID stehen - das Passwort da brauchts nicht
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

Geändert von eagle275 (25.02.2011 um 08:08 Uhr).
eagle275 ist offline   Mit Zitat antworten
Alt 25.02.2011, 10:08  
Globe31
Gast
 
Beiträge: n/a
Standard

Und du willst n Browsergame machen? Wenn du bei so einer Mini-Aufgabe scheiterst? Btw, wurde ja schon gesagt, aber der Code ist grauenhaft. Mich schüttelts. Viel Erfolg bei deinem "Browsergame"
  Mit Zitat antworten
Alt 25.02.2011, 14:30  
Aichix3
Gast
 
Beiträge: n/a
Standard

@ ChrisB Hm, bei mir kommt nichts an mit POST, ganz egal ob mit oder ohne Verbindungsaufbau zur Datenbank. Fehler werden mir auch keine geliefert, wenn ich php.ini von XAMPP entsprechend anpasse.

@ eagle275 Nein, ist es nicht.^^ Der Part mit dem return tritt nur dann ein, wenn $data leer ist, also wenn der Account nicht existiert. Das mit den Sessions werde ich nochmal überarbeiten.

@ Globe31 Wie gesagt, habe ich vor. Games habe ich schon viele entwickelt, in PHP ist das aber mein erstes Projekt. Werde den bereits geschriebenen Code im Laufe der Entwicklung optimieren.
  Mit Zitat antworten
Alt 25.02.2011, 15:16  
Benutzer
 
Registriert seit: 17.12.2010
Beiträge: 54
PHP-Kenntnisse:
Anfänger
Pascalh ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du musst bei den Textfeldern noch das name-Attribut hinzufuegen. Zum Beispiel:

PHP-Code:
<input type="text" name="login_name" value="Nickname" /> 
Die Variable rufst Du dann so auf:

PHP-Code:
<?php
 
echo $_POST['login_name'];
?>
Pascalh ist offline   Mit Zitat antworten
Alt 25.02.2011, 16:15  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

zufällig hat er das schon drin, auch wenn es aufgrund der Schreibweise nicht leicht zu entdecken ist .... ich hab zwar inzwischen "gelernt" dass auch HTML mit '-AttributQuotes zurechtkommt - leichter zu lesen ist es meiner Meinung nach trotzdem, wenn der gesamte echo-String in einfache Quotes kommt und man dann für die Attribute Double-Quotes nehmen kannst.

Allerdings beunruhigt mich deine Antwort an ChrisB

du hast ein POST-Formular und das sollen keine Daten ankommen ?...

bau mal bitte den Anfang deiner index.php wie folgt um:
PHP-Code:
session_start();
var_dump($_POST);
require_once(
"Pages.php");
... 
wenn du dort eine Ausgabe bekommst, dann liegt das Problem an der Art deiner Behandlung in der connect-Funktion ...

bitte vergiss nicht, das PHP bis auf Datenbank und Session-Variablen im Normalfall keine Persistenten Daten hat und komplett Zustandslos arbeitet - nach dem Abschicken des Formulars zum Browser beendet sich PHP und kennt dann beim nächsten Request (Formular wurde ausgefüllt und per Submit abgeschickt) nur die Daten, die du ihm explizit bekannt machst (Session-Variablen, deine POST-Daten) ....

du solltest mal den Programmfluss mit Echo's "erleuchten", ob du wirklich dort ankommst, wo eventuell Daten verglichen werden, und nicht etwa die übergebenen Daten ignoriert werden und einfach das Formular nochmal angezeigt wird-

Und wo ich nochmal drübergucke ... schau dich auch zum Thema SQL-Injections um.. keinesfalls darfst du POST-Variablen unbehandelt direkt mit der Datenbank in "Kontakt" bringen (ja ... auch bei einem einfachen SELECT nicht ... ein Profi könnte dir damit deine komplette Datenbank schreddern, wenn er nur gut genug rät, wie deine Datenbank heißt ....oder sich einen eigenen Admin-Account anlegen, wenn er gut rät wegen Username und Passwort Feld in der Datenbank)
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

Geändert von eagle275 (25.02.2011 um 16:20 Uhr).
eagle275 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Array aus SQL Abfrage zusammenbauen um es rekursiv abzuarbeiten litterauspirna PHP Einsteiger 7 01.02.2011 18:44
Array werte zusammen rechnen fabi288 PHP Einsteiger 13 03.01.2011 16:08
mehrdimensionales array inhalte tauschen pidaman PHP Tipps 2010 18 27.08.2010 16:58
[Erledigt] Problem bei update mit array feldern fulltilt PHP Tipps 2010 6 13.02.2010 00:59
PHPLot von der Datenbank zum mehrdimensionalen Array mannimammut PHP Tipps 2009 1 15.12.2009 10:40
ARRAY: alle möglichen Kombinationen Tentacle PHP Tipps 2006 13 12.05.2006 00:18
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
funktion die array zurück gibt PHP Tipps 2005-2 24 07.09.2005 09:49
leere Arrayfelder aus dem Array werfen micbur PHP Tipps 2005-2 5 02.09.2005 16:08
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Array wie auslesen? PHP Tipps 2005 7 07.03.2005 11:43

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
array gibt immer array, php post array, $_post array, post array, post array leer, post array php, _post array, php $_post array, gibt es _post, formulardaten window-open mit $_post abfragen, html form method=post -> leerem post array, php $_post gibt nur array aus, leeres post array, php wenn post data vorhanden, zurück mit $_post, formular post array leer, php $_post nicht da, §_post gibt nichts mit, php formular array rückgabe, php leere post

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:04 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum