Fehler 405 durch PHP-Skript
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufbauen
beschreibung
code
datum
eintrag
eintragen
ereignis
file
formular
foto
frage
ftp
galerie
header
liegen
pfad
post
server
type
verbindung
-
Ich möchte die Daten aus einem HTML5-Formular per POST-Methode in eine Datenbanktabelle laden. Da ein Feld vom Typ "file" ist, möchte ich zunächst eine ftp-Verbindung aufbauen, um das Bild in eine Gallery zu laden und danach den zurückgegebenen Pfad mit in die DB zu schreiben. Aber auch wenn ich den ftp-Teil auskommentiere, bekomme ich Fehler "405 Not Allowed", daran kann es also wohl nicht liegen...
Hier ein Auszug aus dem Skript (alles bis auf die Connect-Daten)
<?php header ('Content-Type: text/html;charset=utf-8'); header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0'); //ftp-connection für bilder-upload aufbauen // $connection_id=ftp_connect(ftp.lima-city.de); // $login=ftp_login($connection_id, 'xxx','xyz'); // if ((!$connection_id) || (!$login)){ // echo "FTP connection fehlgeschlagen"; // exit; // }else{ // echo "mit dem Server verbunden..."; // } // if ($_POST['foto']){ // define ('UPLOAD_DIR','default-website/uploads/pictures/meldungen/'); // $img=$_POST['foto']; // $img=str_replace('data:image/jpeg;base64,','',$img); // $img=str_replace('','+',$img); // $data=base64_decode($img); // $file=UPLOAD_DIR.uniqid().'jpg'; // $success=ftp_put($connection_id, $file, $img, FTP_BINARY); // if ($success){ // echo $file; // } // else { // echo ('imgSaveErr'); // } // } // ftp_close($connection_id); // Verbindung zur Datenbank aufbauen $verbindung=mysql_connect("mysql.lima-city.de:3306","USERxxx","pwxyz") or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch"); mysql_select_db("db_305151_1") or die ("Die Datenbank existiert nicht."); if (isset($_POST['ereignis']) and isset ($_POST['loglaenge']) and isset ($_POST['logbreite'])){ // $_POST['beschreibung'] = stripslashes($_POST['beschreibung']); // $_POST['lang'] = stripslashes($_POST['lang']); // $_POST['breit'] = stripslashes($_POST['breit']); $timestamp=time(); $today=date("Y.m.d",$timestamp); $eintrag="INSERT INTO 'db_305151_1'.'karte' ( 'id' , 'datum' , 'beschreibung', 'longi' , 'lat' ) VALUES ( NULL , '$today', '$_POST['ereignis']','$_POST['loglaenge']', '$_POST['logbreite']' )"; $eintragen = mysql_query($eintrag); if($eintragen == true) { echo "Eintrag war erfolgreich"; } else { echo "Fehler beim Speichern"; } ?>
Kann mir jemand helfen?
Hab gelesen, es kann an irgendwelchen Server-Konfigurationen liegen, aber wenn das der Fall ist, wo und wie ändere ich das?
Verzweifelte Grüße
Anke -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wieso möchtest du das denn per ftp machen?
Ich habe auc mal so einen upload gemacht, der auch gleich ein kleines vorschaubild erzeugt:
<?php function getGUID(){ if (function_exists('com_create_guid')){ return com_create_guid(); // unter windows-server }else{ // für linux mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up. $charid = strtoupper(md5(uniqid(rand(), true))); $hyphen = chr(45);// "-" $uuid = chr(123)// "{" .substr($charid, 0, 8).$hyphen .substr($charid, 8, 4).$hyphen .substr($charid,12, 4).$hyphen .substr($charid,16, 4).$hyphen .substr($charid,20,12) .chr(125);// "}" return $uuid; } } header("Content-Type: text/html; charset=utf-8"); if($_POST){ include_once("db_connect.php"); //baut mysqli- Datenbankverbindung auf $table = 'galerie'; $original_img_path = '/Galerie/original/'; $mini_img_path = '/Galerie/img_mini/'; //pfade zu den Galerien, realtiver Pfad $error = ""; for($i=0; $i<count($_FILES["img_file"]["name"]);$i++){ if ($_FILES["img_file"]["type"][$i] == "image/jpeg" or $_FILES["img_file"]["type"][$i] == "image/png" or $_FILES["img_file"]["type"][$i] == "image/gif") { // ^- jpeg (jpg und jpeg ) , png und gif Bilder können bearbeitet werden $guid = getGUID(); // funktion oben $new_org_file = $_SERVER['DOCUMENT_ROOT'].$original_img_path.$guid.strrchr($_FILES["img_file"]["name"][$i],"."); $new_mini_file = $_SERVER['DOCUMENT_ROOT'].$mini_img_path.$guid.strrchr($_FILES["img_file"]["name"][$i],"."); // erstellt kompletten pfad zu den neuen Bildern move_uploaded_file($_FILES['img_file']['tmp_name'][$i], $new_org_file); // verschiebt das temporäre Bild zu dem eben erstellten pfad (+ umbenennung) list($width_org, $height_org) = getimagesize($new_org_file); // breite und höhe des original Bildes, für die Seitenverhältnisse switch ($_FILES["img_file"]["type"][$i]) { case "image/jpeg": $image_org = imagecreatefromjpeg($new_org_file); break; case "image/png": $image_org = imagecreatefrompng($new_org_file); break; case "image/gif": $image_org = imagecreatefromgif($new_org_file); break; } $image_new = imagecreatetruecolor((50*$width_org)/$height_org,50); imagecopyresampled($image_new, $image_org, 0, 0, 0, 0, (50*$width_org)/$height_org, 50, $width_org, $height_org); switch ($_FILES["img_file"]["type"][$i]) { case "image/jpeg": imagejpeg($image_new,$new_mini_file,100); break; case "image/png": imagepng($image_new,$new_mini_file,0); break; case "image/gif": imagegif($image_new,$new_mini_file); break; } imagedestroy($image_org); imagedestroy($image_new); //Pfad zum Datenbank-String hinzufügen $sqlinsertquery = "INSERT INTO ".$table." SET "; $sqlinsertquery .= "pfad_org='".$original_img_path.$guid.strrchr($_FILES["img_file"]["name"][$i],".")."', pfad_mini='".$mini_img_path.$guid.strrchr($_FILES["img_file"]["name"][$i],".")."'" ; $query_result = mysqli_query($mysqli, $sqlinsertquery); if(!$query_result){ printf("Error: %s\n", mysqli_error($mysqli)); } } else { $error .= "Dateiformat nicht unterstützt. (".$_FILES['img_file']['name'][$i].")<br/>"; } } echo($error); } mysqli_close($mysqli); } ?>
ich hoffe, es funktioniert auch bei dir, bei fragen, einfach fragen
matthias -
Ich wollte es zunächst auch ohne ftp machen, jedoch habe ich tinyWebGallery installiert, um dort die Fotos reinzuladen. tinyWebGallery lässt den Upload aber nur über ihren eigenen Uploader oder ftp zu. (war die offizielle Antwort von denen) Alles andere ist geschützt/gesperrt. Welche Gallerie hattest du denn installiert? Vielleicht kann ich ja meine wieder deinstallieren und eine simplere nutzen...
Außerdem löst das leider wohl nicht das 405 Not Allowed Problem, weil das auch bestand, als ich den ftp-Teil - also den kompletten Bilder-Upload - weggelassen habe und nur die restlichen Daten aus meinem Formular in die DB schreiben wollte. Liegt es vielleicht an der Methode "post"?
Trotzdem danke für die Hilfe...
-
ich habe die selber geschrieben.
liegt es bei dir vieleicht an den headern?
und : verwende lieber mysqli statt mysql, ist sicherer
ansonsten wüst ich nicht, woran es liegen könnte -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage