kostenloser Webspace werbefrei: lima-city


Wo ist hier der Fehler

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    seth93

    seth93 hat kostenlosen Webspace.

    Hi,
    hab eben ein kleines Script selber geschrieben.
    Ist eigt das erste mal, sonst kopier ich mir immer Scripte und passe sie an.
    kontakt.html
    <table border="0" cellpadding="1" cellspacing="2">
    <form action="kontakt.php" method="post">
    <tr>
      <td>Username:</td>
      <td><input name="username" size="20" type="text"></td>
    </tr>
    <tr>
      <td>Passwort:</td>
      <td><input type="password" name="passwort" size="20"></td>  
    <tr>
      <td>Betreff:</td>
      <td><select name="betreff" size="1"><option>Vorschl&auml;ge</option>
    <option>Kritik!</option><option>Brauche Hilfe</option><option>Sonstiges</option><option>Fehler melden</option></select></td>
    </tr>
    <tr>
      <td>Nachricht:</td>
      <td><textarea cols="25" name="nachricht" rows="5"></textarea></td>
    </tr>
    <tr>
    <input type="hidden" name="check" value="1">
      <td align="center" colspan="2"><input name="Send" type="submit" value="Abschicken"></td>
    </tr>
    </form>
    </table>


    Kontakt.php
    <?
    mysql_connect("mysql.lima-city.de", "USER118899" , "blabla");
    mysql_select_db("db_118899_2"); 
    $betreff = $_POST["betreff"];
    $nachricht = $_POST["nachricht"];
    $username = $_POST["username"];
    $passwort = md5($_POST["passwort"]);
    $check = $_POST["check"]; 
    $email = $_POST["email"];
    $name = $_POST["name"];
    if($check = 1)
    {
    
    $abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1";
    $ergebnis = mysql_query($abfrage);
    $row = mysql_fetch_object($ergebnis);
    
    if($row->passwort == $passwort)
        {
        $eintrag = "INSERT INTO support (username, betreff, nachricht) VALUES ('$username', '$betreff', '$nachricht')";
        $eintragen = mysql_query($eintrag);
            if($eintragen == true)
            {
            echo "Ticket wurde abgeschickt.";
            }
            else
            {
            echo "Fehler";
            }
            }   
            }
    else
    {
    echo "Falsches Passwort, falscher Benutzername oder Benutzername existiert nicht.";
    }
    
    ?>



    Es kommt keine Fehlermeldung.
    Es kommt gar nichts -.-


    Beitrag geändert: 11.10.2008 13:23:19 von seth93
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Vielleicht ist "Check" nicht gesetzt? Mach mal ein echo mit allen Variablen vor die if Abfrage.
  4. Vielleicht solltest du das mit check weglassen und stattdessen mit
    if(isset($_POST['Send'])){
      ...
    }

    arbeiten.

    Außerdem willst du vermutlich check mit 1 vergleichen, setzt es aber auf 1. Einfach den Vergleichsoperator == verwenden.

    Beitrag geändert: 11.10.2008 18:47:26 von progger
  5. p***********d

    if ($check = 1)

    Da liegt der Fehler. Du weißt $check einfach nur den Wert 1 zu, willst aber überprüfen ob es 1 ist. = und == ist ein kleiner aber feiner Unterschied.

    if ($check == 1)

    muss es heißen.
  6. Autor dieses Themas

    seth93

    seth93 hat kostenlosen Webspace.

    Hab es geändert, aber es funktioniert nicht.
    Da hab ich alles mit echo angeben lassen und bei select,option und beim textarea wurde das nicht übergeben.
    Geht das denn überhaupt?
    Ich hab immer input-Felder bisher genutzt.
  7. Es würde sich empfehlen anstatt Check abzufragen, ob es den Wert 1 hat oder nicht, zu gucken, ob es leer ist oder nicht
    Ich würde folgendes schreiben:

    if(!empty($check)){

    }

    Hat 2 Gründe:
    1. es vermeidet Fehler, wie $check = 1 und
    2. es überprüft, auch, ob check überhaupt da ist.
    Eigentlich wäre es sehr Sinnvoll, wenn man das Ganze etwas verändert:

    <?
    if(!empty($_POST["check"]))
    {
      $betreff = $_POST["betreff"];
      $nachricht = $_POST["nachricht"];
      $username = $_POST["username"];
      $passwort = md5($_POST["passwort"]);
      $email = $_POST["email"];
      $name = $_POST["name"];
    
      mysql_connect("mysql.lima-city.de", "USER118899" , "blabla");
      mysql_select_db("db_118899_2"); 
    
      $abfrage = "SELECT username, passwort FROM login WHERE username = '$username' LIMIT 1";
      $ergebnis = mysql_query($abfrage);
      $row = mysql_fetch_object($ergebnis);
    
      if($row->passwort == $passwort){
        $eintrag = "INSERT INTO support (username, betreff, nachricht) VALUES ('$username', '$betreff', '$nachricht')";
        $eintragen = mysql_query($eintrag);
        if($eintragen == true){
          echo "Ticket wurde abgeschickt.";
        } else {
          echo "Fehler";
        }
      }   
    } else {
      echo "Falsches Passwort, falscher Benutzername oder Benutzername existiert nicht.";
    }
    
    ?>


    Der Sinn dahinter ist folgender:
    Es macht ja nicht allzu viel Sinn, sich mit der Datenbank zu verbinden obwohl man die Verbindung gar nicht braucht.
    Außerdem braucht man die Werte nicht, wenn sie gar nicht gesetzt sind.
    Und, was ich besonders wichtig finde ist, wenn man einen nicht existierenden Index anspricht, wird eine Warnung ausgegeben.
    die Abfrage if(!empty($_POST["check"])) verhindert diese Warnung, da man wenn check da ist, davon ausgehen kann, dass die anderen Variablen auch da sind.

    Außerdem habe ich aus dem LIKE ein = gemacht, weil du ja sowieso den exakten Namen haben willst^^

    Grüße
    xelax90

    EDIT:
    versuch mal am Anfang des Skripts
    print_r($_POST);
    zu machen.
    Das gibt den gesamten POST Array aus
    dann siehst du, ob die Parameter da sind, oder nicht


    Beitrag geändert: 11.10.2008 19:56:13 von xelax90
  8. Autor dieses Themas

    seth93

    seth93 hat kostenlosen Webspace.

    Ok danke.
    Ich hab 2 Formulare.
    Einmal für angemeldete User und einmal für Besucher.
    Beim User hat check den Wert 1 und beim Besucher 2, damit die Unterschieden werden ^^
    Hab nur einen Teil meines Scriptes gepostet,weil bei beiden der gleiche Fehler sein muss.

    Es wird alles richtig übergeben, aber es klappt immer noch nicht.
    Ich probier gleich mal dein Script aus.

    EDIT:
    Verbindung zur DB weil ich ja prüfen möchte, ob das Passwort und der Benutzername stimmen, bevor das abgeschickt wird.
    Dein Script ergibt auch Fehler ^^
    Die Tabelle support existiert sowie die Spalten darin.
    Ich finde den Fehler einfach nicht.

    EDIT:
    Wo immer der Fehler auch lag, es funktioniert endlich.



    Beitrag geändert: 11.10.2008 20:44:17 von seth93
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!