2011-01-11 23 views
1

Ich bin neu hier und ich habe eine Frage. Ich habe ein Problem, dass ich es mit _POST nicht herausfinden kann. Ich habe stundenlang gesucht, bevor ich anfing zu schreiben! Soweit ich sehen kann, habe ich keine der Fehler gemacht, die für andere ähnliche Fragen geschrieben wurden (Formular Aktion ..., Namensattribut ..., etc). Bitte, kannst du meinen Code unten überprüfen, um mir zu sagen, was mache ich falsch?

Ich benutze XAMPP 1.7.3 auf Windows 7.


<?php require("includes/header.php"); ?> 
<?php require_once("includes/connection.php"); ?> 
<?php require_once("includes/functions.php"); ?><head> 
<script type="text/javascript"> 

function theChecker() 
{ 
if(document.getElementById('checker').checked){ 
    document.getElementById('submitter').disabled=false; 
} 
else{ 
    document.getElementById('submitter').disabled=true; 
} 
} 
</script> 

</head> 

<?php require("includes/body_no_menus.php"); ?> 

<div align="center"> 
<form name="signup" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 

<?php 

echo "<hr/> 
<table width='600' border='0'> 
    <tr> 
    <td width='237'>Κωδικός οικοδομής</td> 
    <td width='351'><input name='building_id' type='text' id='building_id' size='30' maxlength='40' />*</td> 
    </tr> 
    <tr> 
    <td>Κωδικός διαμερίσματος</td> 
    <td><input name='apartment_id' type='text' id='apartment_id' size='30' maxlength='40' />*</td> 
    </tr> 
    <tr> 
    <td></td> 
    <td height='31' colspan='2' ><label> 
    <input name='send' type='submit' value='Αποστολή' /> 
    </label></td> 
    </tr> 

</table> 
"; 
?> 
</form> 
</div> 


<p> 

<?php 

if(isset($_POST['send'])) { 
// Check input/Required fields 
$building_id = check_input($_POST['building_id'],"Εισάγετε τον κωδικό της οικοδομής!"); 
$apartment_id = check_input($_POST['apartment_id'],"Εισάγετε όνομα χρήστη!"); 

$query = "SELECT idTENANT,FNAME,LNAME,BUILDING_ADMIN,PHONE FROM TENANT,APARTMENT, BUILDING 
    WHERE TENANT.APARTMENT_ID = APARTMENT.idAPARTMENT 
    AND APARTMENT.BUILDING_ID = BUILDING.idBUILDING 
    AND idAPARTMENT = '$apartment_id' 
    AND idBUILDING = '$building_id'"; 
$result=mysql_query($query) or die ("Couldn't execute query."); 
$row = mysql_fetch_array($result); 

$id = $row['idTENANT']; 
$fname = $row['FNAME']; 
$lname = $row['LNAME']; 
$apartment = $row['APARTMENT_ID']; 
$phone = $row['PHONE']; 
if($row['BUILDING_ADMIN'] == 0) 
    $admin = "ΟΧΙ"; 
else 
    $admin = "ΝΑΙ"; 
echo " <hr /> 
<table width='300' border='0'> 
    <tr>  
    <td>Όνομα</td>   
    <td>$fname</td> 
</tr> 
    <tr>  
    <td>Επίθετο</td>   
    <td>$lname</td> 
</tr> 
    <tr>  
    <td>Όνομα χρήστη</td>   
    <td><input name='username' type='text' size='30' maxlength='20' />*</td> 
    </tr> 
    <tr>  
    <td>Κωδικός χρήστη</td>  
    <td><input name='password' type='password' size='30' maxlength='20'/>*</td> 
</tr> 
    <tr>  
    <td>Επαλήθευση κωδικού</td>  
    <td><input name='verify_password' type='password' size='30' maxlength='40'/> *</td> 
</tr> 
    <tr>  
    <td>Διαχείριση οικοδομής</td> 
    <td>$admin</td> 
</tr> 
    <tr>  
    <td>Τηλέφωνο</td>    
    <td>$phone</td> </tr> 

    <tr> 
    <td></td> 
    <td><input name='checkterms' type='checkbox' id='checker' onclick='theChecker()' value='Ναι'/> 
    <label>Έχω διαβάσει και αποδέχομαι τους όρους χρήσης.</label> *</td> 
    </tr> 
    <tr> 
    <td></td> 
    <td><input type='submit' name='complete' id='submitter' value='Ολοκλήρωση εγγραφής' disabled/></td> 
    </tr> 
</table> 
"; 
} 

if(isset($_POST['complete'])) { 
// Password match 
if ($password != $verify_password) 
{ 
    echo '<font color="red">Οι κωδικοί δεν ταιριάζουν</font>'; 
}//if 
else 
{ 
    // Execute MySQL commands 
    $query = "UPDATE TENANT SET USERNAME = '$un', PASSWD='$pw' WHERE idTENANT='$id'"; 
    $result=mysql_query($query) or die ("Couldn't execute query."); 
    header("Location: main_login.php"); 
}//else 
}//if 
?> 

</p> 
<?php require("includes/footer.php"); ?> 

Die erste _POST (if (isset ($ _ POST [ 'senden'])) ...) funktioniert perfekt . Aber wenn (isset ($ _ POST ['complete'])) {... tut nichts. Ich habe versucht, einige Daten zu Echo, um zu sehen, wenn meine Verbindung nicht funktioniert, aber es ist die _POST ...

Bitte helfen Sie mir !!!!

Danke für Ihre Zeit!

+0

korrigieren Sie bitte Ihre Formatierung des Codes. Ich kann es einfach nicht lesen. Vor allem nicht russisch. Vielleicht ist Ihr Code nicht in der richtigen Codierung. – Christian

+0

Randnotiz: Ich rieche SQL-Injektion. – AndiDog

+0

Entschuldigung für meine Formatierung Ich habe es behoben! –

Antwort

0

Die zweite Gruppe von Formularelementen (Benutzername, Kennwort, verify_password, checkterms, complete) befindet sich nicht in einem HTML-Formularelement. Durch Klicken auf die zweite Schaltfläche wird das Formular nicht an den Server gesendet.

+0

Vielen Dank! Das funktioniert wirklich! –

1

, was Sie könnten versuchen:

  1. Verwendung vardump zu sehen, was $ _POST enthält: var_dump($_POST);.
  2. Verwenden Sie firebug (oder etwas ähnliches für einen anderen Browser), um die Anfrage zu suchen und zu sehen, welche POST-Parameter gesendet werden.
+0

oder print_r ($ _ POST) – dotty

+0

Ich habe print_r verwendet und habe folgendes bekommen: Array ([building_id] => 2 [apartment_id] => 21-2 [send] => Αποστολή (= Sende auf Griechisch)). Wie ich finde, ist der _POST immer noch auf "Senden". Wie kann ich das ändern? Gibt es irgendeinen Weg? –

0
header("Location: main_login.php"); 

wird funktionieren nicht, wenn $_POST["complete"] erreicht ist. Sie haben bereits eine Menge Ausgaben vorher gesendet. Aktivieren Sie mehr error_reporting.