Redirectionare dupa incarcare imagine.

cadou
Mesaje: 284

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