Redirectionare dupa incarcare imagine.

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
cadou
Mesaje: 318

Redirectionare dupa incarcare imagine.

Am pe pagina X un iframe din pagina Y ce actioneaza codul din pagina Z

pagina Y este

Cod: Selectaţi tot

<?php session_start();?>
<script src="/js/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="../css.css" />

<style type="text/css">
  #uploadframe { display:none; }
</style>
<form id="uploadform" action="/users/upload.php" method="post" enctype="multipart/form-data" target="uploadframe" onsubmit="uploadimg(this); return false">
  <input type="file" id="myfile" name="myfile">
  <input type="submit" value="Salveaza poza" />
  <iframe id="uploadframe" name="uploadframe" src="/users/upload.php" width="8" height="8" scrolling="no" frameborder="0"></iframe>
</form>
<div id="showimg"> </div>
   <div class="progress" style="color:red;">
     <div class="bar" style="color:yellow;"></div >
     <div class="percent" style="color:green;"></div >
   </div>
   <div id="status" style="color:blue;"></div>
<script type="text/javascript"><!--
function uploadimg(theform){
var file = $('#myfile').val();
	
	if(file.length == 0)
{ $('#showimg').html('<font color="red">Selecteaza un fisier</font>'); }
else {
  theform.submit();
  setStatus("<br>Se incarca imaginea... Asteapta pana cand este gata (maxim 5 minute)", "showimg");
// progres bar //

// end progres bar //
}
}

function doneloading(rezultat) {
  rezultat = decodeURIComponent(rezultat.replace(/\+/g,  " "));
  document.getElementById('showimg').innerHTML = rezultat;  
}

function setStatus(theStatus, theloc) {
  var tag = document.getElementById(theloc);

  if (tag) {
    tag.innerHTML = '<b>'+ theStatus + "</b>";
  }
}
--></script>
iar pagina Z este codul php de incarcare a pozei

Cod: Selectaţi tot

<?php session_start(); include('../conectare.php');

if(isset($_SESSION['nume']))
{
$rezultat = '';
// Daca este primit din formular un fisier valid
if(isset($_FILES['myfile']))
{ // daca nu e selectat nici un fisier sa dea eroare
if($_FILES['myfile']['name'] == '')
{ $rezultat = '<img src=/imagini/stare-error.png> <font color=red>Alege o poza!</font>'; }
// daca e selectat fisieru, spor la incarcat 
else if(strlen($_FILES['myfile']['name'])  !== 0) 
{ 
if (isset($_FILES['myfile'])) {
  // Verifica daca fisierul are tipul de extensie permis
  $type = end(explode(".", strtolower($_FILES['myfile']['name'])));
      // Daca nu sunt erori in procesul de copiere
      if ($_FILES['myfile']['error'] == 0) {
        // Seteaza locatia si numele pt. incarcare pe server
        $id = ''.$_SESSION['id'].'.0';
        $thefile = 'poza-profil/'.$id.'.jpg';

        // Daca fisierul nu poate fi incarcat, returneaza mesaj
        if (!move_uploaded_file ($_FILES['myfile']['tmp_name'], $thefile)) {
          $rezultat = '<img src=/imagini/stare-error.png>
            Sa intamplat ceva, nu stiu ce este, revin-o peste cateva minute pentru a 
            schimba poza de profil! Daca problema persista contacteaza-ne!';
        }
        else {
          // Returneaza succes
          $rezultat = '<img src=/imagini/stare-succes.png>
          <font color=green>Poza ta de profil a fost incarcata cu succes, aceasta va aparea pe site dupa ce o va 
          aproba un administrator al site-ului, daca aceasta respecta Termenii si conditiile site-ului!
          </font>';
        }
      }
}
}
}
}
// daca e delogat sa dea eroare //
else
{
$rezultat = '<img src=/imagini/stare-error.png> <font color=red>Pentru a schimba poza de profil trebuie sa fi logat pe site</font>';
}

// Codeaza cu 'urlencode()' variabila $rezultat si o returneaza in 'onload', intr-un tag BODY
$rezultat = urlencode($rezultat);
echo '<body onload="parent.doneloading(\''.$rezultat.'\')"></body>';
?>
Dar nu reusesc sa pun o redirectionare dupa ce apare mesajul ca sa incarcat imaginea, o redirectionare dupa 5 secunde ...

Am incercat cateva variante, dar fara rezultat ...

- Edit:
Si daca se poate ca sa se micsoreze cat ocupa o imagine, exemplu din 2 3 Mb , sa fie cateva 100 de Kb, dar sa nu se piarda oarecum din claritate si din dimensiune.
Help :D

MarPlo
Incearca cu setTimeout() in finctia doneloading():

Cod: Selectaţi tot

function doneloading(rezultat) {
  rezultat = decodeURIComponent(rezultat.replace(/\+/g,  " "));
  document.getElementById('showimg').innerHTML = rezultat;

  //redirect after 5 sec.
  window.setTimeout(function(){
    window.location ='adresa-redirect';
  }, 5000);
}
- Daca vrei marimea imaginii mai mica, o poti edita/optimiza cu un editor de imagini (photoshop, gimp).

cadou
unde este pus acum acel redirect, ma redirectioneaza dupa 5 secunde de cand dau click sa selectez imaginea din calculator, nu dupa mesajul de confirmare a imaginii ...

MarPlo
Redirectul se face la 5 secunde dupa apelarea functiei doneloading().
Probabil acea functie este apelata inainte; trebuie apelata impreuna cu imaginea dupa incarcare.
Sau pui redirect-ul intr-o conditie ca sa se faca atunci cand rezulttul e un tag <img>

Cod: Selectaţi tot

function doneloading(rezultat) {
  rezultat = decodeURIComponent(rezultat.replace(/\+/g,  " "));
  document.getElementById('showimg').innerHTML = rezultat;

  //redirect after 5 sec.
  if(rezultat.match(/\<img /i)){
    window.setTimeout(function(){
      window.location ='adresa-redirect';
    }, 5000);
  }
}

cadou
Multumesc !
Rezolvat :) :D :D

Subiecte similare