2016-06-07 22 views
0

Ich versuche, eine Anmeldung in Form basierend auf Webcam-Bild zu implementieren, anscheinend, ich nicht Fehler im Code, aber Informationen nicht in der Datenbank veröffentlicht.Informationen nicht in der Datenbank

Hier ist mein Index mit PHP-Code für Insert-Informationen in der Datenbank:

<?php 
if (isset($_POST['desc'])) { 
    if (!isset($_POST['iscorrect']) || $_POST['iscorrect'] == "") { 
     echo "Sorry, important data to submit your question is missing. Please press back in your browser and try again and make sure you select a correct answer for the question."; 
     exit(); 
    } 
    if (!isset($_POST['type']) || $_POST['type'] == "") { 
     echo "Sorry, there was an error parsing the form. Please press back in your browser and try again"; 
     exit(); 
    } 
    require_once("scripts/connect_db.php"); 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $name = mysqli_real_escape_string($connection, $name); 
    $name = strip_tags($name); 
    $email = mysqli_real_escape_string($connection, $email); 
    $email = strip_tags($email); 
    if (isset($_FILES['image'])) { 
     $name = $_FILES['image']['tmp_name']; 
     $image = base64_encode(
       file_get_contents(
         $_FILES['image']['tmp_name'] 
       ) 
     ); 
    } 
    $sql = mysqli_query($connection, "INSERT INTO users (name,email,image) VALUES ('$name', '$email','$image')")or die(mysqli_error($connection)); 
    header('location: index.php?msg=' . $msg . ''); 
    $msg = 'merge'; 
} 
?>  
<?php 
$msg = ""; 
if (isset($_GET['msg'])) { 
    $msg = $_GET['msg']; 
} 
?> 
    <!doctype html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title>Licenta Ionut</title> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } </script> 
     <!-- font files --> 
     <link href='//fonts.googleapis.com/css?family=Muli:400,300' rel='stylesheet' type='text/css'> 
     <link href='//fonts.googleapis.com/css?family=Nunito:400,300,700' rel='stylesheet' type='text/css'> 
     <!-- /font files --> 
     <!-- css files --> 
     <link href="css/style.css" rel='stylesheet' type='text/css' media="all" /> 
     <link href="web.js" rel='stylesheet' type='text/css' media="all" /> 
     <script type="text/javascript" src="web.js"></script> 
     <!-- /css files --> 
    </head> 
    <body> 
     <p style="color:#06F;"><?php echo $msg; ?></p> 
     <h1>LogIn with Webcam Password</h1> 
     <div class="log"> 
      <div class="content1"> 
       <h2>Sign In Form</h2> 
       <form> 
        <input type="text" name="userid" value="USERNAME" onfocus="this.value = '';" onblur="if (this.value == '') { 
            this.value = 'USERNAME'; 
           }"> 
        <input type="password" name="psw" value="PASSWORD" onfocus="this.value = '';" onblur="if (this.value == '') { 
            this.value = 'PASSWORD';}"> 
        <div class="button-row"> 
         <input type="submit" class="sign-in" value="Sign In"> 
         <input type="reset" class="reset" value="Reset"> 
         <div class="clear"></div> 
        </div> 
       </form> 
      </div> 
      <div class="content2"> 
       <h2>Register</h2> 
       <form action="index.php", name="index.php" method="post" enctype="multipart/form-data"> 
        <input type="text" id="name" name="name" value="Nume"> 
        <input type="text" id="email" name="email" value="EmailAdress"> 
        <br> 

        <script type="text/javascript" src="webcam.js"></script> 
        <script language="JavaScript"> 
     document.write(webcam.get_html(320, 240)); 
        </script> 
        <div class="button-row"> 
         <input class="sign-in" type=button value="Configure" onClick="webcam.configure()" class="shiva"> 
         <input class="reset" type="submit" value="Register" id="image" onClick="take_snapshot()" class="shiva"> 
        </div> 
       </form>  
      </div> 
      <div class="clear"></div> 
     </div> 
    </body> 
</html> 

Und hier ist das Skript für die Verbindung zur Datenbank:

<?php 

$db_host = "localhost"; 
// Place the username for the MySQL database here 
$db_username = "Ionut"; 
// Place the password for the MySQL database here 
$db_pass = "1993"; 
// Place the name for the MySQL database here 
$db_name = "users"; 

// Run the connection here 
$connection=mysqli_connect("$db_host","$db_username","$db_pass") or die (mysqli_connect_error()); 
mysqli_select_db($connection,"$db_name") or die ("no database"); 
?> 

I und nicht Fehler im Code finden Ich brauche deinen Rat/Hilfe!

Vielen Dank für Ihr Interesse an meinem Problem!

+0

Setzen Sie 'ini_set ('display_errors', 1); ini_set ('display_startup_errors', 1); error_reporting (E_ALL); 'oben in Ihrem PHP-Skript. Zeigt es irgendwelche Fehler an? –

+0

irgendwelche grundlegenden Debugging getan, wie prüfen, ob $ _POST ['desc'] 'tatsächlich existiert? Außerdem sind Sie anfällig für [sql injection attacks] (http://bobby-tables.com). Sie verwenden die Escape-Aufrufe fälschlicherweise (** VERMEIDEN SIE NIEMALS die Zeichenfolge mit dem Escaped-Zeichen - Sie riskieren, die Escape-Operation zu ÜBERNEHMEN). Darüber hinaus überprüfen Sie nie, ob der Upload tatsächlich erfolgreich war. nur weil es Informationen in $ _FILES gibt, die nichts bedeuten - gescheiterte Uploads werden Daten in $ _FILES setzen. –

+1

@NanaPartykar: sinnlos. Zitate wie diese zu verwenden, ist einfach eine Frachtkult-Programmierung, aber es ändert nichts an den Werten. –

Antwort

1

Um ein Problem wie dieses zu lösen, zerlegen Sie das Problem in Teile.

(1) Zuerst, was erhält die PHP-Datei? An der Spitze der PHP-Datei einfügen:

<?php 
    echo '<pre>'; 
    print_r($_POST); 
    echo '</pre>'; 
    die('-----------------------------------'); 

(2) Wenn das das Problem nicht offenbart, nächster Schritt ist die PHP-Datei und in der zweiten Kopie, HARD CODE die Informationen zu duplizieren werden Sie an der Spitze der Einreichung (als Ersatz für die PHP-Daten, die normalerweise vorgelegt werden):

<?php 
    $_POST['desc'] = 'TEST - Description'; 
    $_POST['iscorrect'] = 'what it should be'; 
    $_POST['type'] = 'TEST - Type'; 
    etc 

Dann laufen die Datei geändert und sehen, ob die Daten vorgelegt.

(3) Wenn das das Problem nicht offenbart, arbeiten Sie mit der doppelten PHP-Datei und fügen Sie echo Anweisungen an verschiedenen Stellen hinzu, um zu sehen, wo die Datei bricht. Zum Beispiel:

$name = $_POST['name']; 
$email = $_POST['email']; 
$name = mysqli_real_escape_string($connection, $name); 
echo 'HERE 01'; 
$name = strip_tags($name); 
$email = mysqli_real_escape_string($connection, $email); 
$email = strip_tags($email); 
echo 'HERE 02'; 
if (isset($_FILES['image'])) { 
    $name = $_FILES['image']['tmp_name']; 
    $image = base64_encode(
      file_get_contents(
        $_FILES['image']['tmp_name'] 
      ) 
    ); 
} 
echo 'HERE 03'; 
$sql = mysqli_query($connection, "INSERT INTO users (name,email,image) VALUES ('$name', '$email','$image')")or die(mysqli_error($connection)); 
echo 'HERE 04: $sql = ' .$sql; 
+0

wirklich danke für den Rat! Es ist sehr nützlich. Ich hoffe, mein Problem zu lösen. Danke nochmal! :) –

Verwandte Themen