2016-03-30 12 views
0

Bir simge sayfam var Kullanıcıya bir resim yüklemesi gerekiyor ve işim bittiğinde ancak tamamlama lambası kazanıldıktan sonra yön sayfamı koyduğumda 't yüklemek veya görevi tamamlamak ama sayfayı kaldırmak eğer tam ince burada uygulanan mantıktan herhangi bir yardım kodunda kalın çizgi o redirection` olan sorundur koddurphp bir görevi başarıyla tamamladıktan sonra kullanıcıyı başka bir sayfaya yönlendirmek gerekiyor

<?PHP 
session_start(); 
if (!(isset($_SESSION['login']) && $_SESSION['login'] != '')) { 
    header ("Location: index.php"); 
} 
?> 
<?php 
$target_dir = "uploads/"; 
$jobnumber="try_"; 
$random_digit=rand(0000,9999).$jobnumber; 

//combine random digit to you file name to create new file name 
//use dot (.) to combile these two variables 

$new_file_name=$random_digit. basename($_FILES["fileToUpload"]["name"]); 
$target_file = $target_dir .$new_file_name; 
$uploadOk = 1; 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
// Check if image file is a actual image or fake image 
if(isset($_POST["submit"])) { 
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
    if($check !== false) { 
     echo "File is an image - " . $check["mime"] . "."; 
     $uploadOk = 1; 
    require_once("mysql_connect.php"); 

    $sql = "INSERT INTO imagepath (jobnumber,imagepath) 
VALUES ('$_POST[Name]','$target_file')"; 

$result = mysqli_query($connection, $sql); 
     **header("location:logout.php");** 
    } else { 
     echo "File is not an image."; 
     $uploadOk = 0; 
    } 
} 
// Check if file already exists 
if (file_exists($target_file)) { 
    echo "Sorry, file already exists."; 
    $uploadOk = 0; 
} 
// Check file size 
if ($_FILES["fileToUpload"]["size"] > 2000000) { 
    echo "Sorry, your file is too large."; 
    $uploadOk = 0; 
} 
// Allow certain file formats 
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" 
&& $imageFileType != "gif") { 
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
    $uploadOk = 0; 
} 
// Check if $uploadOk is set to 0 by an error 
if ($uploadOk == 0) { 
    echo "Sorry, your file was not uploaded."; 
// if everything is ok, try to upload file 
} else { 
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { 
     echo "The file ". basename($_FILES["fileToUpload"]["name"]). " has been uploaded."; 

    } else { 
     echo "Sorry, there was an error uploading your file."; 
    } 

} 

?>` 
+0

Tek bir çözüm, yönlendirme başlıklarına yardımcı olan 'çıktı arabelleği'dir. Farklı bir uygun cevap alamıyorsanız bilgi içeren bir link. [Çıktı Tamponlama] (http://stackoverflow.com/questions/2832010/what-is-output-buffering) – lovermanthing

cevap

1

Kalmayacaksın Tarayıcıya herhangi bir şey çıkardıysanız header yapabileceksiniz. Yani burada:

if (!(isset($_SESSION['login']) && $_SESSION['login'] != '')) { 
    header ("Location: index.php"); 
} 
?> 
<?php 
$target_dir = "uploads/"; 

?> <?php (sadece sizin header seçenekleri mahvediyor, tarayıcıya bir satır sonu gönderir) bu yüzden bu satırları kaldırın Bir gerek yok. Sonra, kaba bir çözüm, olacaktır her yerde echo bir sonuç, bunun yerine, örneğin, $_SESSION koymak: Sonra

$_SESSION['upload_error'] = 'File is not an image.'; 

, onları geri yönlendirmek olduğunu $uploadOk == 0 eğer öyleyse mantık değiştirmek isteyeyim Yükleme sayfasına ve numaralı sayfasında, $_SESSION['upload_error'] boş değilse, görüntüleyin. Aksi takdirde, başka bir yere yönlendirin. Bu mantıkla ilgili yardıma ihtiyacınız varsa, bana bildirin.


Zaman kaybı için minimal-ish değişiklikleri ile ham ve hızlı bir çözüm. Yapabileceğin bazı optimizasyonlar var, ama bu ihtiyaçlarınız için çalışmalı.

görüntü işleme dosyası upload.php olduğunu ve form başka bir şey gibi gösterilir diyelim index.php

<?php 

    session_start(); 

    if (!(isset($_SESSION['login']) && $_SESSION['login'] != '')) { 
     header ("Location: index.php"); 
    } 

    $_SESSION['upload_error'] = null; 
    $_SESSION['upload_success'] = null; 

    $target_dir = "uploads/"; 
    $jobnumber="try_"; 
    $random_digit=rand(0000,9999).$jobnumber; 

    //combine random digit to you file name to create new file name 
    //use dot (.) to combile these two variables 

    $new_file_name=$random_digit . basename($_FILES["fileToUpload"]["name"]); 
    $target_file = $target_dir . $new_file_name; 
    $uploadOk = 1; 
    $imageFileType = pathinfo($target_file, PATHINFO_EXTENSION); 

    // Check if image file is a actual image or fake image 
    if (isset($_POST["submit"])) { 
     $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
     if ($check === false) { 
      $_SESSION['upload_error'] = "File is not an image."; 
      $uploadOk = 0; 
     } 
    } 

    // Check if file already exists 
    if (file_exists($target_file)) { 
     $_SESSION['upload_error'] = "File already exists."; 
     $uploadOk = 0; 
    } 

    // Check file size 
    if ($_FILES["fileToUpload"]["size"] > 2000000) { 
     $_SESSION['upload_error'] = "Your file is too large."; 
     $uploadOk = 0; 
    } 

    // Allow certain file formats 
    if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") { 
     $_SESSION['upload_error'] = "Only JPG, JPEG, PNG & GIF files are allowed."; 
     $uploadOk = 0; 
    } 

    if ($uploadOk == 1) { 
     if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { 
      $_SESSION['upload_success'] = "The file " . basename($_FILES["fileToUpload"]["name"]) . " has been uploaded."; 
     } else { 
      $uploadOk = 0; 
     } 
    } 

    // Check if $uploadOk is set to 0 by an error 
    if ($uploadOk == 1) { 
     # This is where I make an obligatory comment about how you should not use user-provided data ($_POST['Name']) directly in a query, 
     # which is 100% true, but is a topic for another question 
     require_once("mysql_connect.php"); 
     $sql = "INSERT INTO imagepath (jobnumber, imagepath) VALUES ('" . $_POST['Name'] . "', '$target_file')"; 
     $result = mysqli_query($connection, $sql); 

     header("Location: success.php"); 
    } else { 
     header("Location: index.php"); // send them back to the form, where you will display your error message 
    } 

?> 

Ve bu index.php çok çıplak iskeleti olacaktır:

<?php 

    session_start(); 

    # This will vary a lot depending on if you're in an MVC setup and/or using a templating engine, etc, but basically: 

    // display HTML things like a header, etc 

    if (!empty($_SESSION['upload_error'])) { 
     echo "Sorry, your file was not uploaded: " . $_SESSION['upload_error']; 
    } 

    // display the rest of your HTML 

?> 

success.php benzer olurdu, ancak açıkça bir başarı mesajı görüntülüyorsunuz; bunun yerine index.php'da yapabilir, bu dosyayı !empty($_SESSION['upload_success']) numaralı telefondan kontrol edebilir ve eğer göstermiyorsa görüntüleyebilirsiniz.

+0

Teşekkürler Davis gerçek mantık büyük bir yön olacaktır – Tim

+0

@Tim, özellikler için benim düzenleme kontrol edin. Eğer sizin için çalışıyorsa cevabı kabul ettiğinizden emin olun. Eğer herhangi bir sorun varsa bana bildirin. – Davis

+0

teşekkürler adam bu yardımcı oldu – Tim

İlgili konular