php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.12.2008, 13:32  
Neuer Benutzer
 
Registriert seit: 29.12.2008
Beiträge: 3
vollderdude befindet sich auf einem aufstrebenden Ast
Standard Win+Firefox alles ok, IE oder Linux: Probleme

Hallo!

Zunächst: Ich bin totaler Anfänger in PHP, von daher kann es sein, dass einiges im folgenden Code vllt. nich ganz so gut gelöst ist .
Ich programmiere gerade eine Nutzerverwaltung basierend auf MySQL. Ich hänge zur Zeit an den Formularen für das Bearbeiten eines Datensatzes. Man soll per Radio-Button einen Datensatz aus einer Tabelle auswählen können, nach Klick auf den "Datensatz auswählen"-Button sollen auf der nachfolgenden Seite sollen die Daten des Datensatzes in Textfeldern angezeigt werden, sodass sie bearbeitet werden können. Wenn kein Datensatz gewählt wird und auf den "Datensatz auswählen"-Button klickt, erscheint eine Fehlermeldung, dass kein Datensatz ausgewählt wurde.

Ich benutze XAMPP 1.6.7 und Firefox 2 als Browser unter Windows XP. In dieser Verbindung funktioniert das auch alles sehr gut, genau wie ich es mir wünsche. Gestern habe ich dann mal versucht, das ganze unter Opera und dem Internet Explorer ans Laufen zu kriegen - Hier machen die Radio-Buttons Probleme. Egal ob ein Datensatz ausgewählt wurde oder nicht, stehts wird gemeldet es sei keiner ausgewählt.

Dasselbe probierte ich auch unter Suse Linux aus. Hier kann ich sogar gar nicht schreibend auf die Datensatz zugreifen (das Hinzufügen eines Datensatzes mithilfe eines anderen Formulars funktioniert in Windows allerdings in allen 3 Browsern.), hier vermute ich aber eher Probleme mit MySQL, deshalb sei dieses Problem erstmal beiseite geschoben
Jedenfalls funktioniert das Auswählen eines Datensatzes selbst unter Firefox in Linux nicht.

Hier ist der Code des Formulars, in dem per Radio-Button der Datensatz ausgewählt wird:

PHP-Code:
<html>
<head>
<title>
Accounts bearbeiten
</title>
</head>
<body>
<body bgcolor= "#D3D3D3">
<font face="Arial">

 <?php

  
require 'conn.php';

  
$abfrage='SELECT * FROM accountverwaltung';
  
$ergebnis=mysql_query($abfrage);

  
$anzahlds mysql_num_rows($ergebnis);
  echo 
"$anzahlds Datensätze gefunden<br><br>";        
?>


<form method = "post" action = "frmAccountsbearbeiten2.php">

<table width="1000" cellpadding="0" cellspacing="0" border="1">
<tr>
    <th>Auswahl</th>
    <th>Mitarbeiter-ID</th>
    <th>Name</th>
    <th>Vorname</th>
    <th>Username</th>
    <th>Passwort</th>
    <th>Beschäftigung</th>
</tr>


<a href ="frmAccountverwaltung.php">Zurück zur Accountverwaltung<br><br></a>
<input type="submit" name="waehlen" value="Datensatz auswählen">
</form>

<?php

  
while($attrib=mysql_fetch_object($ergebnis)){      

    echo 
'<tr>'."\n";

    echo  
'<td><input type="radio" name="auswahl" value = "'.$attrib->Mitarbeiter_ID.'"></td>'."\n";

    echo 
'<td align="center">'.$attrib->Mitarbeiter_ID.'</td>'."\n";
    echo 
'<td align="center">'.$attrib->Name.'</td>'."\n";
    echo 
'<td align="center">'.$attrib->Vorname.'</td>'."\n";
    echo 
'<td align="center">'.$attrib->Username.'</td>'."\n";
    echo 
'<td align="center">'.$attrib->Passwort.'</td>'."\n";
    echo 
'<td align="center">'.$attrib->Beschaeftigung.'</td>'."\n";
  }
?>
</table>
</body>
</font>
</html>
Hier nun das Formular, in dem die Daten des gewählten Datensatzes bearbeitet werden können:


PHP-Code:
<html>
<head>
<title>
Accounts bearbeiten
</title>
</head>
<body>
<body bgcolor= "#D3D3D3">
<font face="Arial">


<?php

if (isset($_POST["speichern"]))
{

  if (
$_POST["Name"] == NULL)
         {
         die(
"Es wurde kein Name eingegeben. Bitte geben Sie einen Namen an.");
       }

  if (
$_POST["Vorname"] == NULL)
         {
         die(
"Es wurde kein Vorname eingegeben. Bitte geben Sie einen Vornamen an.");
       }

  if (
$_POST["Username"] == NULL)
         {
         die(
"Es wurde kein Username eingegeben. Bitte geben Sie einen Usernamen ein, mit dem sich der Benutzer einloggen kann.");
       }

  if (
$_POST["Passwort"] == NULL)
         {
         die(
"Es wurde kein Passwort eingegeben. Bitte geben Sie ein Passwort an.");
       }

  if (
$_POST["Beschaeftigung"] == NULL)
         {
         die(
"Es wurde keine Beschäftigung ausgewählt. Bitte wählen Sie die Beschäftigung des Mitarbeiters aus.");
       }



$Mitarbeiter_ID $_POST["Mitarbeiter_ID"];
$Name $_POST["Name"];
$Vorname $_POST["Vorname"];
$Username $_POST["Username"];
$Passwort md5($_POST["Passwort"]);
$Beschaeftigung $_POST["Beschaeftigung"];

$sql "UPDATE Accountverwaltung SET Name='$Name', Vorname='$Vorname', Username='$Username', Passwort='$Passwort', Beschaeftigung='$Beschaeftigung' WHERE Mitarbeiter_ID='$Mitarbeiter_ID'";

require 
'conn.php';

mysql_query($sql$conn);
mysql_close();

echo 
"Die Daten wurden aktualisiert";

?>

<a href ="frmAccountverwaltung.php"><br>Zurück zur Accountverwaltung<br><br></a>

<?php
}

else
{

//GIBT IM FIREFOX UNTER WINDOWS 1 AUS! TROTZDEM IEXPLORER-FEHLER !
//echo isset($_POST['auswahl']);

$tempid$_POST['auswahl'];

if (
$_POST["auswahl"] != NULL)
{
  require 
'conn.php';
   
$abfrage "select * from Accountverwaltung where Mitarbeiter_ID='$tempid'";

   
$result mysql_query($abfrage)
   or die(
mysql_error().'<hr />'$abfrage .'<hr />');

   
$altName mysql_result($result,0,"Name");
   
$altVorname mysql_result($result,0"Vorname");
   
$altUsername mysql_result($result,0,"Username");
   
$altPasswort mysql_result($result,0"Passwort");
   
$altBeschaeftigung mysql_result($result,0"Beschaeftigung");


   
mysql_close();
}

else
  die(
"Es wurde kein Datensatz ausgewählt.");
?>

  <form method="post" action="frmAccountsbearbeiten2.php">
  <input type="hidden" name="Mitarbeiter_ID" value="<? echo $tempid?>"><br>
 <table border="0" align="left">

<a href ="frmAccountverwaltung.php">Zurück zur Accountverwaltung<br><br></a>
    <tr>
      <td>Name</td>
      <td><input type="text" name="Name" size="30" value="<? echo $altName?>"></td>
    </tr>

    <tr>
      <td>Vorname</td>
      <td><input type="text" name="Vorname" size="30" value="<? echo $altVorname?>"></td>
    </tr>

    <tr>
      <td>Username</td>
      <td><input type="text" name="Username" size="30" value="<? echo $altUsername?>"></td>
    </tr>

    <tr>
      <td>Passwort</td>
      <td><input type="text" name="Passwort" size="30" value="<? echo $altPasswort?>"></td>
    </tr>

    <tr>
      <td>Beschäftigung</td>
      <td><label><input type="radio" name="Beschaeftigung" value="Administrator" <? if ($altBeschaeftigung=='Administrator') echo checked?>/>Administrator</label><br><label><input type="radio" name="Beschaeftigung" value="Empfangskraft" <? if ($altBeschaeftigung=='Empfangskraft') echo checked?>/>Empfangskraft</label><br><label><input type="radio" name="Beschaeftigung" value="ExecutiveHousekeeper" <? if ($altBeschaeftigung=='ExecutiveHousekeeper') echo checked?>/>Executive Housekeeper</label></td>
    </tr>
   
    <tr>
      <td><input type="submit" name="speichern" value="Daten speichern"></td>
    </tr>

     </form>
     </table>
 <?php ?>

</body>
</html>
Ich habe bereits mit error_reporting(E_ALL); und print_r($_POST); versucht den Fehler zu finden.
Wenn ich unter Firefox unter Windows keinen Datensatz auswähle und auf den Button klicke, erscheint so richtigerweise die Meldung:

Array ( [waehlen] => Datensatz auswählen )
Notice: Undefined index: auswahl in ...\frmAccountsbearbeiten2.php on line 78

Notice: Undefined index: auswahl in ...\frmAccountsbearbeiten2.php on line 80
Es wurde kein Datensatz ausgewählt.

Zeile 78 und 80 sind diese Zeilen aus dem zweiten Formular.
PHP-Code:
<?php
$tempid
$_POST['auswahl'];

if (
$_POST["auswahl"] != NULL)
?>
Wenn ich allerdings z.b. Datensatz 2 wähle, so erscheint die Meldung
Array ( [waehlen] => Datensatz auswählen [auswahl] => 2 )

Unter dem Internet Explorer erhalte ich dagegen die oben genannte Meldung es sei kein Datensatz ausgewählt auch wenn dem definitiv so ist.

Unter Firefox mit Linux erscheint - wenn kein Datensatz ausgewählt wurde - die Meldung
Array ([waehlen] => Datensatz auswählen) Es wurde kein Datensatz ausgewählt

Wenn hier Datensatz 2 gewählt wird, erscheint:
Array([waehlen] => Datensatz auswählen[auswahl] => 2) Es wurde kein Datensatz ausgewählt.

Die Auswahl wird in diesem Fall also sogar definitiv übernommen und trotzdem tut sich nix. Hat jemand vllt. eine Idee woran das liegen könnte ? Ich würde mich über Antworten freuen,
mfg
vollderdude
vollderdude ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 29.12.2008, 18:55  
Erfahrener Benutzer
 
Registriert seit: 19.03.2007
Beiträge: 176
BlackWolf ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also generell ist der verwendete browser eigentlich egal.

unter linux würde ich mal meine apache/php konfiguration durchschauen, ich vermute das der fehler da zu suchen ist.

im internet explorer scheint es mir als ob überhaupt keine post-daten übergeben werden, da ich allerdings nie internet explorer verwende kann ich dazu recht wenig sagen. mir wäre aber nicht bekannt das es eine derartige einstellung im IE gibt.

mfg
BlackWolf ist offline  
Alt 29.12.2008, 19:25  
Erfahrener Benutzer
 
Registriert seit: 14.08.2008
Beiträge: 157
Hexe befindet sich auf einem aufstrebenden Ast
Standard

Du solltest das Formular nicht vor dem Radio-Button schließen.
Hexe ist offline  
Alt 29.12.2008, 22:38  
Neuer Benutzer
 
Registriert seit: 29.12.2008
Beiträge: 3
vollderdude befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für eure Antworten bis hierhin.

@BlackWolf: hm, ja, ich muss mir die Konfiguration mal genauer anschauen, mal gucken ob ich mich da zurechtfinde

@Hexe: Super, danke! Naja, im Internet Explorer und unter Linux habe ich noch dasselbe Problem, aber zumindest unter Opera unter Windows funktioniert das ganze jetzt auch . Hab das </form>-Tag an das Ende der Datei gesetzt.
vollderdude ist offline  
Alt 31.12.2008, 04:46  
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Beiträge: 316
PHP-Kenntnisse:
Fortgeschritten
moveax1 befindet sich auf einem aufstrebenden Ast
Standard

Befasse dich für ein langes überleben deiner Skripte bitte auch mit dem Thema SQL Injection.
Du übergibst $_POST Variablen ohne vorher den Inhalt zu filtern oder zu escapen.
__________________
twitter.com/moveax1 || http://modxcms.com/ || http://ubuntuusers.de/

$live->free() OR die();
moveax1 ist offline  
Alt 02.01.2009, 11:42  
Neuer Benutzer
 
Registriert seit: 29.12.2008
Beiträge: 3
vollderdude befindet sich auf einem aufstrebenden Ast
Standard

Hi moveax1,

danke für deine Anregung ... Ich habe den folgenden Block

$Mitarbeiter_ID = $_POST["Mitarbeiter_ID"];
$Name = $_POST["Name"];
$Vorname = $_POST["Vorname"];
$Username = $_POST["Username"];
$Passwort = md5($_POST["Passwort"]);
$Beschaeftigung = $_POST["Beschaeftigung"];

einfach in

$Mitarbeiter_ID = $_POST["Mitarbeiter_ID"];
$Name = mysql_real_escape_string($_POST["Name"]);
$Vorname = mysql_real_escape_string($_POST["Vorname"]);
$Username = mysql_real_escape_string($_POST["Username"]);
$Passwort = mysql_real_escape_string(md5($_POST["Passwort"]));
$Beschaeftigung = $_POST["Beschaeftigung"];

geändert. Ist das Thema damit abgehakt ? Muss man jegliche POST-Variablen escapen ? Ich habe $Mitarbeiter_ID und $Beschaeftigung nicht escaped, da die Mitarbeiter_ID per hidden-Feld übergeben werden soll (hier wird also keine Benutzereingabe per Textfeld getätigt) und $Beschaeftigung repräsentiert den Wert eines Radio-Buttons. Reicht das aus, oder sollte ich mysql_real_escape_string bei jeder POST-Variable ergänzen ?
vollderdude ist offline  
Alt 02.01.2009, 16:17  
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Beiträge: 316
PHP-Kenntnisse:
Fortgeschritten
moveax1 befindet sich auf einem aufstrebenden Ast
Standard

Ich würde für ganzzahlige Werte intval() nutzen.

Auch hidden Felder können einfach manipuliert werden, man kann sich das Formular auch selber schreiben oder einfach die Web Developer Toolbar oder Tamper für eine Manipulation nutzen.

Generell solltest du jeglichen Input von der Clientseite misstrauen
__________________
twitter.com/moveax1 || http://modxcms.com/ || http://ubuntuusers.de/

$live->free() OR die();
moveax1 ist offline  
 


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
Firefox / IE - Probleme HTML, Usability und Barrierefreiheit 5 20.07.2009 17:04
probleme bei internet explorer und firefox igron PHP Tipps 2008 0 12.05.2008 17:27
Firefox / IE - ungeahnte Statistik pepe24 Off-Topic Diskussionen 10 30.04.2007 16:46
Firefox will mein 3-spaltiges Layout mit Footer nicht (CSS)! vampsoftchef HTML, Usability und Barrierefreiheit 1 28.02.2007 00:22
Session funktioniert im IE nicht, Firefox ohne Probleme havok PHP Tipps 2006 7 14.08.2006 14:05
Probleme mit Firefox lessiv Off-Topic Diskussionen 1 10.01.2006 15:19
[Erledigt] window.location.href mit firefox HTML, Usability und Barrierefreiheit 15 18.11.2005 17:49
CSS Layout macht Probleme mit Firefox Wimme HTML, Usability und Barrierefreiheit 2 15.10.2005 13:33
Deer Park Alpha 1 (=Mozilla Firefox 1.1) Off-Topic Diskussionen 15 09.07.2005 02:32
[Erledigt] verfluchter Firefox HTML, Usability und Barrierefreiheit 5 08.07.2005 22:51
[Erledigt] Script Interpretaion läuft falsch im Firefox PHP-Fortgeschrittene 23 11.05.2005 19:01
[Erledigt] Linux Server, Hosting und Workstations 14 25.11.2004 17:04
Morzilla Firefox und CSS probleme JEGO HTML, Usability und Barrierefreiheit 20 18.11.2004 21:49
ttf unter windows und linux PHP Tipps 2004 0 19.10.2004 17:03
[Erledigt] PHP Script von Windows auf Linux PHP-Fortgeschrittene 7 15.06.2004 13:23

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
internet explorer post daten, ie unter linux, ie submit keine post daten, $_post explorer, internet explorer $_post, internet explorer post daten nicht uebergeben, ie keine post daten, firefox 7 formular php problem,e, post variablen ie, internet explorer $_post problem, internet explorer postdaten, apache ie post daten, linux firefox php probleme, php firefox internet explorer select $_post, firefox type=radio, firefox linux input felder, php prüfen ob ie oder firefox, linux firefox buttons, linux probleme mit firefox, $_post arry beim ie anderes als bei firefox

Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 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