Seite 1 von 2

Problem mit selbst gecodeten PHP-Script

Verfasst: 27.09.2005 15:56
von 1patrick
Hallöchen :grin:

Ich habe leider ein Problem mit einem von mir selbst programmierten PHP Script. Genauer gesagt tritt dieses Problem nur mit meinem Hoster auf, lokal und auf anderen Webspaces funktioniert alles tadellos.
Der Admin des besagten Hosters kennt leider keine Lösung, ich hoffe, ihr könnt mir sagen, warum das hier nicht funktioniert:

Wenn man auf [habs selbst entfernt ;)]
ohne etwas einzugeben auf "Senden" klickt, dann bekommt man sofort (direkt unter dem Formular) Fehlermeldungen angezeigt, die besagen, das man die entsprechenden Felder nicht ausgefüllt hat- gut so :)
Aber selbst wenn man die Felder ausfüllt, kommt diese Fehlermeldung noch. Vielleicht können die Formulardaten da nicht richtig verarbeitet werden, ich weiß es nicht.

Hoffentlich weiß da jemand eine Lösung...bzw. ahnt woran es liegen könnte...

Hier der entsprechende PHP-Code:

Code: Alles auswählen

 
<?php
$Inhalt = $_GET['action'];
if($Inhalt == "eintragen")
{
if($name != "" & $rasse != "" & $geschlecht != "" & $befehle != "" & $charakter != "")
{
$dateiname = $_FILES['Datei']['name'];
$nachricht = "
<table width=\"69%\"  border=\"0\">
  <tr>
    <td width=\"29%\" bgcolor=\"#FFCC66\"><b>Name:</b></td>
    <td width=\"71%\">$name</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Rasse:</b></td>
    <td>$rasse</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Geschlecht:</b></td>
    <td>$geschlecht</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Befehle:</b></td>
    <td>$befehle</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Charaktereigenschaften:</b></td>
    <td>$charakter</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Bild des Welpens:</b></td>
    <td><img src=\"upload/$dateiname\"></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
  </tr>
</table>
";
$datei = fopen("welpen.txt","a");
  fwrite($datei, $nachricht);
  fclose($datei);
  
$counter = fopen("counter.txt","r+");
  $counterstand = fgets($counter, 10);
  if($counterstand == "")
    {
    $counterstand = 0;
    }
  $counterstand++;
  rewind($counter);
  fwrite($counter, $counterstand);
  fclose($counter);
  
echo("<b><u>Herzlichen Dank, dass du dein Welpen in unsere List eingetragen hast!<br>Dein Eintrag erscheint z.Zt. ganz unten!</b></u>");
}
if($name == "")
{
echo("Bitte gib den Namen deines Welpens ein!<br>");
}
if($rasse == "")
{
echo("Bitte wähle die Rasse deines Welpens aus!<br>");
}
if($geschlecht == "")
{
echo("Bitte wähle das Geschlecht deines Welpens aus!<br>");
}
if($befehle == "")
{
echo("Bitte gib ein, welche Befehle dein Welpen bereits erlernt hat!<br>");
}
if($charakter == "")
{
echo("Bitte gib Charaktereigenschaften deines Welpens ein!<br>");
}
if($_FILES['Datei']['tmp_name'])
{
echo"Deine Datei ("",
$_FILES['Datei']['name'],
"") ist ",
$_FILES['Datei']['size'],
" Bytes groß.";
move_uploaded_file($_FILES['Datei']['tmp_name'], "upload/".$_FILES['Datei']['name']);
}
else
{
echo"Bitte gib eine Datei an!";
}
}
?>

Verfasst: 27.09.2005 16:03
von witzigerkiller
also wenn ich jetzt auf senden klicke, dann wird der button disabled also grau. Aber kommen tut keine meldung, und refresht wird auhc nicht.

Aber ein vorschlag:

ersetz mal:

Code: Alles auswählen

if($name != "" & $rasse != "" & $geschlecht != "" & $befehle != "" & $charakter != "") 
mit:

Code: Alles auswählen

if (empty($_POST['name']) OR empty($_POST['rasse']) OR empty($_POST['geschlecht']) OR empty($_POST['befehle']) OR empty($_POST['charakter']))
Vllt liegt es daran.

Aber bedenke.

form muss so aussehn:

Code: Alles auswählen

method="post"

und mach diese einzelnen abfragen weg:

Code: Alles auswählen

if ($name = "")
denn meine abfrage ist für alles zusammen.

Verfasst: 27.09.2005 16:24
von 1patrick
Ich glaub du verstehst das Script falsch.
Denn bei deinem Code würde ein Eintrag erfolgen, unter der Bedingung, das die Felder leer wären:

Code: Alles auswählen

empty($_POST['rasse'])
oder etwa nicht?

Nach Klick auf "Senden" wird dieser deaktiviert (um ein zweites klicken zu verhindern). Dann wird an die URL die Variable ?action=eintragen angehängt und anschließend mit

Code: Alles auswählen

if($name != "" & $rasse != "" & $geschlecht != "" & $befehle != "" & $charakter != "") 
überprüft, ob die entsprechenden Variablen ausgefüllt sind.
Wenn sie ausgefüllt sind (d.h. NICHT leer sind), dann werden die Daten in eine Datei reingeschrieben.

Und diese Abfragen wie

Code: Alles auswählen

if ($name = "")
prüfen, ob die entsprechenden Felder leer sind. Wenn ja, dann wird die entsprechende Fehlermeldung ausgegeben.


Aber ok, hab einfach bei Abfragen wie

Code: Alles auswählen

if ($name = "")
das $name durch $_POST['name'] etc. ersetzt.
Das löst das Problem das man nix eintragen kann, aber wenn was eingetragen wurde, dann wird nix angezeigt.

Muss ich jetzt auch die Variabeln $name etc. in

Code: Alles auswählen

$nachricht = "
<table width=\"69%\"  border=\"0\">
  <tr>
    <td width=\"29%\" bgcolor=\"#FFCC66\"><b>Name:</b></td>
    <td width=\"71%\">$name</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Rasse:</b></td>
    <td>$rasse</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Geschlecht:</b></td>
    <td>$geschlecht</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Befehle:</b></td>
    <td>$befehle</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Charaktereigenschaften:</b></td>
    <td>$charakter</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Bild des Welpens:</b></td>
    <td><img src=\"upload/$dateiname\"></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
  </tr>
</table>
";
ändern? Wenn ja, wie?

Verfasst: 27.09.2005 16:28
von witzigerkiller
Schick mal nochmal dein komplettes script.

Ich werde es so umschreiben, das es funktioniert. Schick zu dem script auch das formular.

Habe gerade eh ncihts besseres zu tun

Verfasst: 27.09.2005 16:29
von fanrpg
ohne register_globals wird das Script nicht funktionieren ersetze mal überall im Script
$name, $rasse, $geschlecht, $befehle, $charakter durch
$_POST['name'], $_POST['rasse'], $_POST['geschlecht'], $_POST['befehle'], $_POST['charakter']

Das dürfte helfen

Verfasst: 27.09.2005 16:32
von witzigerkiller
habe ich doch erwähnt oder? Habe doch überall vorhin ersetzt mit $_POST.
außer in der tabellen konstruktion

Verfasst: 27.09.2005 16:39
von 1patrick
Also ich hab das jetzt überall ersetzt, außer in der Tabelle.
Probierts aus, was passiert!
Die Tabelle wird erzeugt, ist allerdings leer!

@witzigerkiller: habs dir gemailt, Beteff: Die Datei zum umschreiben ;-)
Hoffe das dus hinkriegst ;)

Verfasst: 27.09.2005 16:43
von witzigerkiller
was soll denn passieren? Wenn ich auf senden klicke, passiert gar nichts, auser das es disabled wird

Verfasst: 27.09.2005 16:45
von 1patrick
witzigerkiller hat geschrieben:was soll denn passieren? Wenn ich auf senden klicke, passiert gar nichts, auser das es disabled wird
Naja es werden die eingegebenen Daten in eine Tabelle gespeichert und diese dann ganz unten auf der Seite angezeigt.
Bzw. es erscheinen direkt unter dem Formular Fehlermeldung(en)

Verfasst: 27.09.2005 16:46
von witzigerkiller
bevor ich umschreibe teste ich nochmal