Trying to insert the image generated from the user's webcam into the mysql database using php, but this will not work. I am using webcam.js and everything is working fine. When the user takes a snapshot, the image is saved on the server, however the mysql insert does not perform the insert task. Any idea why it is not working?
Both codes are shown below:
cam.php:
session_start(); include_once 'dbconnect.php';//connection to db if(!isset($_SESSION['user'])){//ensures that it the true user header("Location: index.php"); } //display current time //$arrival_time= date('Ymd Hi-s'); //echo "$arrival_time"; if (isset($_POST['send'])) { $getname= mysql_real_escape_string($_POST['last_name']); $idvalue= $_SESSION['myvalue']; $update=mysql_query("UPDATE `employees`.`webcam_clockin` SET `last_name`='$getname' WHERE image_id='$idvalue'"); if($update) { //run a check to verify last_name $sql=mysql_query("SELECT users.*, employees.* FROM users NATURAL JOIN employees WHERE employees.last_name='$getname'"); $result=mysql_fetch_array($sql); if($result){ $_SESSION['user'] = $result['user_id']; header("Location: home.php"); } else { ?> <script> alert('Wrong Last Nane'); </script> <?php } } else { echo "Error Not done"; } } </style> </head> <body> <div class="container"> <div align="center"> <script> webcam.set_api_url( 'camsave.php' ); webcam.set_quality( 100 ); // JPEG quality (1 - 100) webcam.set_shutter_sound( true ); // play shutter click sound </script> <script> document.write(webcam.get_html(640, 480)); webcam.set_hook('onComplete', 'my_callback'); function my_callback(msg) { document.getElementById('upload').innerHTML = msg; } function do_upload(){ webcam.snap(); } function my_callback(msg) { // extract URL out of PHP output if (msg.match(/(https\:\/\/\S+)/)) { var image_url = RegExp.$1; // show JPEG image in page document.getElementById('upload_results').innerHTML = '<h1>Upload Successful!</h1>' + '<h3>JPEG URL: ' + image_url + '</h3>'; } else alert("PHP Error: " + msg); } </script> </div> <div> <form class="form-signin" id="myForm"><br> <h3 class="form-signin-heading">Enter Your Name. Take a Nice Picture and Submit</h3> <input type=button class="btn btn-lg btn-primary btn-block" id="snap" onclick="do_upload()" value="Snap"> </form> <form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post" class="form-signin" ><br> <label for="last_name" class="sr-only">Enter Last Name</label> <input type="text" name="last_name" id="last_name" class="form-control" placeholder="Last Name" required autofocus> <input type="submit" class="btn btn-lg btn-primary btn-block" name="send" id="send"> </form> </div> </td><td width=50> </td><td valign=top> <div id="upload"></div> </td></tr></table> </div> </body> </html>
camsave.php:
session_start(); include_once 'dbconnect.php'; if(!isset($_SESSION['user'])) { header("Location: index.php"); } //get some data about this user $res2=mysql_query("SELECT users.*, employees.* FROM users NATURAL JOIN employees WHERE user_id=".$_SESSION['user']); $userRow=mysql_fetch_array($res2); if ($userRow) { echo "correct!!"; } //Define storage location of original images $folder = "images/"; $filename = date('YmdHi-s') . '.jpg'; $original = $folder.$filename; //Get JPEG snapshot from webcam $input = file_get_contents('php://input'); //Blank images are discarded if(md5($input) == '7d4df9cc423720b7f1f3d672b89362be'){ exit(); } //Retreive the snap and save to original dest. $file= file_put_contents($original, $input); if(!$file){ print "ERROR: Failed to write data to $filename, check permissions\n"; exit(); } else { //Get the size of the image $info = getimagesize($original); list($width,$height) = $info; if($info['mime'] != "image/jpeg"){//ensure we get right file extension unlink($original); exit(); } //Move images to the Original folder rename($original, "images/original/".$filename); $emp_no = $userRow['emp_no'];//employee number $user_id = $_SESSION['user_id'];//user ID $image_id = NULL; $original = "images/original/".$filename;//our image $last_name =$_SESSION['last_name']; $path = "images/thumbnail/".$filename; $sql=mysql_query("INSERT INTO `webcam_clockin` (`image_id`, `user_id`, `images`, `emp_no`, `last_name`) VALUES ('$image_id', '$user_id','$path','$emp_no', '$last_name')"); move_uploaded_file($original, $path); if(move_uploaded_file($filename, $original)){ echo "The file ". $original.$filename. " has been uploaded, and your information has been added to the directory"; echo "Thank You "; echo $userRow['username']; echo".\n"; } else{ echo "Sorry, there was a problem uploading your file."; echo "Error inserting entry data: ".mysql_error(); ?> <script> alert('Error Inserting your details. Please, see your department manager'); </script> <?php } $value=mysql_insert_id(); $_SESSION["myvalue"]=$value; } $url = 'https://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']) . '/' . $filename; print "$url\n";
Finally, I solved the problem of saving the image in the database. The problem was the wrong data type in phpmyadmin, which should be longblob.
source share