Ajax image upload-form zurück forbidden 403-Fehler
HALLO alle,
Ich bin derzeit am basteln mit dieser pre-Autor ajax/php Bild-Upload-Skript, aber nach fast 2 Tage versucht herauszufinden, warum es wirft 403 forbidden Fehler(Sie haben keine Berechtigung zum access /ajaxupload.php
auf diesem server), ich bin out-of-Optionen, sondern um Fragen an die gurus hier.
Ich vermute, es hat etwas zu tun mit meiner hosts-server-Einstellungen, aber bevor ich ärger Ihnen(dauert ein Tag in der Regel für Sie, um wieder mit Antworten), ich dachte, ich könnte überprüfen mit Euch, im Falle dass mir etwas fehlt, weil ich bin neu mit ajax, und ich vermute, dass dies ist, wo das Skript zu einem Fehler.
Vielen Dank, wer kann vorschlagen, was ich falsch mache.
Prost, Lea.
HTML: upload-Formular:
<form action="http://www.mysite.com/ajaxupload.php" method="post" name="sleeker" id="sleeker" enctype="multipart/form-data">
<input type="hidden" name="maxSize" value="9999999999" />
<input type="hidden" name="maxW" value="200" />
<input type="hidden" name="fullPath" value="http://mysite.com/uploads/" />
<input type="hidden" name="relPath" value="../uploads/" />
<input type="hidden" name="colorR" value="255" />
<input type="hidden" name="colorG" value="255" />
<input type="hidden" name="colorB" value="255" />
<input type="hidden" name="maxH" value="300" />
<input type="hidden" name="filename" value="filename" />
<p><input type="file" name="filename" onchange="ajaxUpload(this.form,'http://mysite.com/uploader.php?filename=name&maxSize=9999999999&maxW=200&fullPath=http://mysite.com/uploads/&relPath=../uploads/&colorR=255&colorG=255&colorB=255&maxH=300','upload_area','File Uploading Please Wait...<br /><img src=\'../images/loader_light_blue.gif\' width=\'128\' height=\'15\' border=\'0\' />','<img src=\'../images/error.gif\' width=\'16\' height=\'16\' border=\'0\' /> Error in Upload, check settings and path info in source code.'); return false;" /></p>
</form>
JS: ajaxupload.js
function $m(theVar){
return document.getElementById(theVar)
}
function remove(theVar){
var theParent = theVar.parentNode;
theParent.removeChild(theVar);
}
function addEvent(obj, evType, fn){
if(obj.addEventListener)
obj.addEventListener(evType, fn, true)
if(obj.attachEvent)
obj.attachEvent("on"+evType, fn)
}
function removeEvent(obj, type, fn){
if(obj.detachEvent){
obj.detachEvent('on'+type, fn);
}else{
obj.removeEventListener(type, fn, false);
}
}
function isWebKit(){
return RegExp(" AppleWebKit/").test(navigator.userAgent);
}
function ajaxUpload(form,url_action,id_element,html_show_loading,html_error_http){
var detectWebKit = isWebKit();
form = typeof(form)=="string"?$m(form):form;
var erro="";
if(form==null || typeof(form)=="undefined"){
erro += "The form of 1st parameter does not exists.\n";
}else if(form.nodeName.toLowerCase()!="form"){
erro += "The form of 1st parameter its not a form.\n";
}
if($m(id_element)==null){
erro += "The element of 3rd parameter does not exists.\n";
}
if(erro.length>0){
alert("Error in call ajaxUpload:\n" + erro);
return;
}
var iframe = document.createElement("iframe");
iframe.setAttribute("id","ajax-temp");
iframe.setAttribute("name","ajax-temp");
iframe.setAttribute("width","0");
iframe.setAttribute("height","0");
iframe.setAttribute("border","0");
iframe.setAttribute("style","width: 0; height: 0; border: none;");
form.parentNode.appendChild(iframe);
window.frames['ajax-temp'].name="ajax-temp";
var doUpload = function(){
removeEvent($m('ajax-temp'),"load", doUpload);
var cross = "javascript: ";
cross += "window.parent.$m('"+id_element+"').innerHTML = document.body.innerHTML; void(0);";
$m(id_element).innerHTML = html_error_http;
$m('ajax-temp').src = cross;
if(detectWebKit){
remove($m('ajax-temp'));
}else{
setTimeout(function(){ remove($m('ajax-temp'))}, 250);
}
}
addEvent($m('ajax-temp'),"load", doUpload);
form.setAttribute("target","ajax-temp");
form.setAttribute("action",url_action);
form.setAttribute("method","post");
form.setAttribute("enctype","multipart/form-data");
form.setAttribute("encoding","multipart/form-data");
if(html_show_loading.length > 0){
$m(id_element).innerHTML = html_show_loading;
}
form.submit();
}
PHP: ajaxupload.php
<?php
function uploadImage($fileName, $maxSize, $maxW, $fullPath, $relPath, $colorR, $colorG, $colorB, $maxH = null){
$folder = $relPath;
$maxlimit = $maxSize;
$allowed_ext = "jpg,jpeg,gif,png,bmp";
$match = "";
$filesize = $_FILES[$fileName]['size'];
if($filesize > 0){
$filename = strtolower($_FILES[$fileName]['name']);
$filename = preg_replace('/\s/', '_', $filename);
if($filesize < 1){
$errorList[] = "File size is empty.";
}
if($filesize > $maxlimit){
$errorList[] = "File size is too big.";
}
if(count($errorList)<1){
$file_ext = preg_split("/\./",$filename);
$allowed_ext = preg_split("/\,/",$allowed_ext);
foreach($allowed_ext as $ext){
if($ext==end($file_ext)){
$match = "1"; //File is allowed
$NUM = time();
$front_name = substr($file_ext[0], 0, 15);
$newfilename = $front_name."_".$NUM.".".end($file_ext);
$filetype = end($file_ext);
$save = $folder.$newfilename;
if(!file_exists($save)){
list($width_orig, $height_orig) = getimagesize($_FILES[$fileName]['tmp_name']);
if($maxH == null){
if($width_orig < $maxW){
$fwidth = $width_orig;
}else{
$fwidth = $maxW;
}
$ratio_orig = $width_orig/$height_orig;
$fheight = $fwidth/$ratio_orig;
$blank_height = $fheight;
$top_offset = 0;
}else{
if($width_orig <= $maxW && $height_orig <= $maxH){
$fheight = $height_orig;
$fwidth = $width_orig;
}else{
if($width_orig > $maxW){
$ratio = ($width_orig / $maxW);
$fwidth = $maxW;
$fheight = ($height_orig / $ratio);
if($fheight > $maxH){
$ratio = ($fheight / $maxH);
$fheight = $maxH;
$fwidth = ($fwidth / $ratio);
}
}
if($height_orig > $maxH){
$ratio = ($height_orig / $maxH);
$fheight = $maxH;
$fwidth = ($width_orig / $ratio);
if($fwidth > $maxW){
$ratio = ($fwidth / $maxW);
$fwidth = $maxW;
$fheight = ($fheight / $ratio);
}
}
}
if($fheight == 0 || $fwidth == 0 || $height_orig == 0 || $width_orig == 0){
die("FATAL ERROR REPORT ERROR CODE [add-pic-line-67-orig] to <a href='http://www.atwebresults.com'>AT WEB RESULTS</a>");
}
if($fheight < 45){
$blank_height = 45;
$top_offset = round(($blank_height - $fheight)/2);
}else{
$blank_height = $fheight;
}
}
$image_p = imagecreatetruecolor($fwidth, $blank_height);
$white = imagecolorallocate($image_p, $colorR, $colorG, $colorB);
imagefill($image_p, 0, 0, $white);
switch($filetype){
case "gif":
$image = @imagecreatefromgif($_FILES[$fileName]['tmp_name']);
break;
case "jpg":
$image = @imagecreatefromjpeg($_FILES[$fileName]['tmp_name']);
break;
case "jpeg":
$image = @imagecreatefromjpeg($_FILES[$fileName]['tmp_name']);
break;
case "png":
$image = @imagecreatefrompng($_FILES[$fileName]['tmp_name']);
break;
}
@imagecopyresampled($image_p, $image, 0, $top_offset, 0, 0, $fwidth, $fheight, $width_orig, $height_orig);
switch($filetype){
case "gif":
if(!@imagegif($image_p, $save)){
$errorList[]= "PERMISSION DENIED [GIF]";
}
break;
case "jpg":
if(!@imagejpeg($image_p, $save, 100)){
$errorList[]= "PERMISSION DENIED [JPG]";
}
break;
case "jpeg":
if(!@imagejpeg($image_p, $save, 100)){
$errorList[]= "PERMISSION DENIED [JPEG]";
}
break;
case "png":
if(!@imagepng($image_p, $save, 0)){
$errorList[]= "PERMISSION DENIED [PNG]";
}
break;
}
@imagedestroy($filename);
}else{
$errorList[]= "CANNOT MAKE IMAGE IT ALREADY EXISTS";
}
}
}
}
}else{
$errorList[]= "NO FILE SELECTED";
}
if(!$match){
$errorList[]= "File type isn't allowed: $filename";
}
if(sizeof($errorList) == 0){
return $fullPath.$newfilename;
}else{
$eMessage = array();
for ($x=0; $x<sizeof($errorList); $x++){
$eMessage[] = $errorList[$x];
}
return $eMessage;
}
}
$filename = strip_tags($_REQUEST['filename']);
$maxSize = strip_tags($_REQUEST['maxSize']);
$maxW = strip_tags($_REQUEST['maxW']);
$fullPath = strip_tags($_REQUEST['fullPath']);
$relPath = strip_tags($_REQUEST['relPath']);
$colorR = strip_tags($_REQUEST['colorR']);
$colorG = strip_tags($_REQUEST['colorG']);
$colorB = strip_tags($_REQUEST['colorB']);
$maxH = strip_tags($_REQUEST['maxH']);
$filesize_image = $_FILES[$filename]['size'];
if($filesize_image > 0){
$upload_image = uploadImage($filename, $maxSize, $maxW, $fullPath, $relPath, $colorR, $colorG, $colorB, $maxH);
if(is_array($upload_image)){
foreach($upload_image as $key => $value) {
if($value == "-ERROR-") {
unset($upload_image[$key]);
}
}
$document = array_values($upload_image);
for ($x=0; $x<sizeof($document); $x++){
$errorList[] = $document[$x];
}
$imgUploaded = false;
}else{
$imgUploaded = true;
}
}else{
$imgUploaded = false;
$errorList[] = "File Size Empty";
}
?>
<?php
if($imgUploaded){
echo '<img src="../images/success.gif" width="16" height="16" border="0" style="marin-bottom: -4px;" /> Success!<br /><img src="'.$upload_image.'" border="0" />';
}else{
echo '<img src="../images/error.gif" width="16" height="16px" border="0" style="marin-bottom: -3px;" /> Error(s) Found: ';
foreach($errorList as $value){
echo $value.', ';
}
}
?>
- Das Hochladen von Skripts müssen Sie den Schreibzugriff auf das Zielverzeichnis. haben, überprüfen Sie diese?
- Sie sind in der Lage, manuell navigieren Sie zu der PHP-Datei richtig?
- Ja, das upload-dir CHMOD 777, und das gleiche problem tritt auf. @Chacha102 ja, ich bin in der Lage, suchen Sie die Datei manuell.
- Ich habe nichts für Sie dabei, aber ich bin gefallen in der Liebe mit der Verwendung von flash für file-uploads.
Du musst angemeldet sein, um einen Kommentar abzugeben.
stellen Sie sicher, dass Sie die Datei Berechtigungen für Ihr upload-Verzeichnis auf 777 gesetzt und in die richtige Gruppe. In Linux ist dies leicht getan mit
und zu überprüfen, was Ihre Rechte sind bereits haben, rufen Sie einfach diese
im obigen Verzeichnis uploads.
Meisten 403 Verboten sind, verursacht durch Berechtigungsprobleme. Hoffe, das hilft.
"Http://" - Wert in der POST wird der server veranlasst, den Zugang zu beschränken. Entfernen Sie einfach das "http://" aus dem Wert oben und fügen Sie es auf der php-Seite der Dinge, und Sie sollten gut zu gehen.
403 forbidden Fehler(Sie haben keine Berechtigung zum access /ajaxupload.php auf diesem server)
vom oben genannten Fehler u überprüfen müssen, um Ihr Dokument-root-Ordner für die domain/url.
überprüfen Sie die Eigentums-und schreib-Berechtigungen. irgendwann kommt Ihr web-server als normaler Benutzer
z.B.: www-Benutzer -
vielleicht haben Sie erstellten Dateien zB. ajaxupload.php als root-Benutzer (wenn es in der unix - /linux-Umfeld).
entweder die Datei oder den Ordner dost nicht erlaubt den Zugriff. überprüfen Sie das Eigentum und die Erlaubnis von der ajaxupload.php Datei-und Dokument-root-Ordner.
einen Weg, um zu testen es raus wenn u r in linux/unix-env nur tun
und versuchen, trigger zurück zu Ihrer Seite.
ok stellen Sie sicher, u haben diese Konfiguration für Ihre doc-root-Ordner Ihrer apache-conf
wenn Sie keinen Zugriff auf httpd/apache-conf-ile können Sie immer verwenden .htaccess-Datei.
erstellen .htaccess-Datei in /your/doc/root/Ordner/.htaccess
in dieser Datei fügen Sie wie folgt vor:
mehr details info über dein system wird helfen, eine Menge.
Das problem ist wahrscheinlich, weil Sie mit http://www.mysite.com und mysite.com... sind Sie vermutlich als zwei unterschiedliche domains und Sie sind technisch tut cross-site-scripting mit Ihrer Anfrage. stellen Sie sicher, Sie verwenden die gleiche Basis-url für alle Ihre Anrufe...
in die form action auf onchange-code, fügen Sie http://localhost/, bevor Sie angeben ajaxupload.php
Dieser Fehler manchmal beziehen sich auf mod_security Konfiguration auf Ihrem server.
Sie können Fragen Sie Ihren host-manager zu deaktivieren. Wenn es funktioniert, Werden Sie sicher, dass Ihre Konfiguration auf mod_security kompatibel sein, die für Ihre codes.