Ver Mensaje Individual
  #5 (permalink)  
Antiguo 22/03/2010, 09:01
neez
 
Fecha de Ingreso: julio-2009
Mensajes: 29
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Cookies en php

Mira Primeramente lo que hago es forma asincronica con javascript voy a pegar todo el codigo que usa espero puedan entenderle.

Codigo Xajax

Cita:
function ValidaEntero($form){
$respuesta = new xajaxResponse();
$ajaxFileUploader = new AjaxFileuploader($uploadDirectory=""); // Clase para subir el archivo archivo AjaxFileUploader.inc
$fpago=$form['fpago'];
if($form['tipo']==0 || $form['tipo']==1){
$crastreo=$form['crastreo'];
if($form['tipo']==1 && $fpago=="Deposito en efectivo" ){
$num=$form['cantidad'];
$num =$num- ($num * (3 / 100) ) ;
}
else{
$num=$form['cantidad'];
}
}
if($form['tipo']==2){
$crastreo=$form['suc'] . $form['hra'] . $form['min'] . $form['sec'];
$num=$form['cantidad'];
}

$fecha=$form['fecha'];
if($form['cuenta'] != "x"){
$cuenta=$form['cuenta'];
}
else{
$cuenta = "Cuenta: " . $form['ctas'] . " - Suc: " . $form['sucursal'] ;
}
$user=$form['user'];
$s=date("s");
$a=$ajaxFileUploader->showFileUploader('id1',$s);
$f=explode("-",$fecha);
if(count($f)!=3){
$fecha="";
$salida1="La fecha debe de tener el formato dd-mm-aaaa";
}
if(!is_numeric($num) || !is_numeric($crastreo)){
$fecha="";
$salida1="Debes introducir solo numeros";
}

if($fecha=="" || $fpago == "" || $cuenta=="" || $form['sistema']==""){
$salida="Debes introducir todos los datos";
if(isset($salida1)){
$respuesta->Assign("error","innerHTML",$salida1);
}
else {
$respuesta->Assign("error","innerHTML",$salida);
}
}
else{
$sistema=$form['sistema'];
$conn=db_connect();
$result=$conn->query("select * from pago where crastreo_pago='$crastreo' and id_user='$user'");
$rows=$result->num_rows;
if($rows==0) {
setcookie("saldo",$num);
$salida="<div id=\"texto\">
<div id=\"titulo\"><img src=\"image/paso2.png\" alt=\"Paso 1\"><br>
<center><strong>Adjunte su comprobante</strong></center></div>

$a<br><br>
<form id=\"formu\" name=\"formu\" method=\"post\">
<input type='hidden' name='cantidad' value='$num'>
<input type='hidden' name='fecha' value='$fecha'>
<input type='hidden' name='fpago' value='$fpago'>
<input type='hidden' name='user' value='$user'>
<input type='hidden' name='cuenta' value='$cuenta'>
<input type='hidden' name='crastreo' value='$crastreo'>
<input type='hidden' name='sistema' value='$sistema'>
<input type=\"submit\" name=\"cancel\" value=\"Cancelar\" onclick=\"xajax_cerrar_sistema()\">

<input type=\"button\" name=\"next\" value=\"Siguiente\" onclick=\"xajax_DivPedido(xajax.getFormValues('for mu'))\">

</form><br><br>

<div id=\"error\"></div></div>
";
$respuesta->Assign("tarriba","innerHTML",$salida);
}
else{
$salida="Lo sentimos el codigo de rastreo ya existe";
$respuesta->Assign("error","innerHTML",$salida);
}
}
//tenemos que devolver la instanciación del objeto xajaxResponse
return $respuesta;
}
Archivo AjaxFileUploader.inc

Cita:
class AjaxFileuploader {
// PHP 4.x users replace "PRIVATE" from the following lines with "var". Also remove all the PUBLIC, PRIVATE and PROTECTED Kaywords from the class
private $uploadDirectory='';
private $uploaderIdArray=array();

/**
* Constructor Function
*
*/
public function AjaxFileuploader($uploadDirectory) {
if (trim($uploadDirectory) != '' && is_dir($uploadDirectory)) {
$this->uploadDirectory=trim($uploadDirectory);
}
}

/**
*
* This function return all the files in the upload directory, sorted according to their file types
*
* @return array
*/
public function getAllUploadedFiles() {
$returnArray = array();
$allFiles = $this->scanUploadedDirectory();
return $returnArray;
}

/**
*
* This function scans uploaded directory and returns all the files in it
*
* @return array
*/
private function scanUploadedDirectory() {
$returnArray = array();
if ($handle = opendir($this->uploadDirectory)) {
while (false !== ($file = readdir($handle))) {
if (is_file($this->uploadDirectory."/".$file)) {
$returnArray[] = $file;
}
}
closedir($handle);
}
else {
die("<b>ERROR: </b> Could not read directory: ". $this->uploadDirectory);
}
return $returnArray;
}

/**
* This function returns html code for uploading a file
*
* @param string $uploaderId
*
* @return string
*/
public function showFileUploader($uploaderId,$s) {
if (in_array($uploaderId, $this->uploaderIdArray)) {
die($uploaderId." already used. please choose another id.");
return '';
}
else {
$this->uploaderIdArray[] = $uploaderId;
return '<form id="formName'.$uploaderId.'" method="post" enctype="multipart/form-data" action="imageupload.php?dirname='.$this->uploadDirectory.'" target="iframe'.$uploaderId.'">
<input type="hidden" name="id" value="'.$uploaderId.'" />

<span id="uploader'.$uploaderId.'" style="font-family:verdana;font-size:10;">

<input name="'.$uploaderId.'" type="file" value="'.$uploaderId.'" onchange=\'return uploadFile(this,"'.$this->uploadDirectory.'")\' /><br>
Es necesario que Adjunte una imagen o documento donde<br>
se visualice su comprobante para proceder con la validacion<br>
del pago correspondiente.<br><br>


Nota: <br><br>

1) Seleccione la ruta donde tiene guardado el archivo<br>
2) Haga click en abrir y espere a que cargue

</span>
<span id="loading'.$uploaderId.'"></span>

<iframe name="iframe'.$uploaderId.'" src="imageupload.php" width="400" height="100" style="display:none"> </iframe>
</form>';
}
}
}
Java Scrip

Cita:
var http=createRequestObject();
var uploader="";
var uploadDir="";
var dirname="";
var filename="";
var timeInterval="";
var idname="";
var uploaderId="";

function createRequestObject() {
var obj;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
return new ActiveXObject("Microsoft.XMLHTTP");
}
else{
return new XMLHttpRequest();
}
}
function traceUpload() {
http.onreadystatechange = handleResponse;
http.open("GET", 'imageupload.php?uploadDir='+uploadDir+'&dirname=' +dirname+'&filename='+filename+'&uploader='+upload er);
http.send(null);
}
function handleResponse() {
if(http.readyState == 4){
var response=http.responseText;
if(response.indexOf("File uploaded") != -1){
clearInterval(timeInterval);
document.getElementById('loading'+idname).innerHTM L="";
}
document.getElementById(uploaderId).innerHTML=resp onse;
}

}
function uploadFile(obj, dname) {
uploadDir=obj.value;
idname=obj.name;
dirname=dname;
filename=uploadDir.substr(uploadDir.lastIndexOf('\ \')+1);
uploaderId = 'uploader'+obj.name;
uploader = obj.name;
document.getElementById('formName'+obj.name).submi t();
timeInterval=setInterval("traceUpload()", 1500);
}
Archivo imageupload.php

Cita:
$dirName="uploads";

if (isset($_POST['id'])) {

//$uploadFile=$_GET['dirname']."/".$_FILES[$_POST['id']]['name']; for security reasons, hardcode the name of the directrory.
@mkdir($dirName,0777);
$info = pathinfo($_FILES[$_POST['id']]['name']);

$uploadFile="$dirName/" . md5($_FILES[$_POST['id']]['name']).".".$info['extension'];

if(!is_dir($_GET['dirname'])) {
echo '<script> alert("Failed to find the final upload directory: $dirName);</script>';
}
if (!copy($_FILES[$_POST['id']]['tmp_name'], $dirName.'/' . md5($_FILES[$_POST['id']]['name']).".".$info['extension'])) {
echo '<script> alert("Failed to upload file");</script>';
}
else {
echo "<img src='loading.gif' alt='loading...' /> ";
}
}
else {
// for secority reason either remove the extentions or rectrict uploaded not to upload / run scripts like file.php else they can misuse the disk space
//$uploadFile=$_GET['dirname']."/".$_GET['filename']; // removed for security reasons (happend with my demo )
$info = pathinfo($_GET['filename']);
$uploadFile="$dirName/" . md5($_GET['filename']).".".$info['extension'];

if (file_exists($uploadFile)) {
setcookie("doc",$uploadFile,time()+3600); //Aqui guardo la COOKIE

/*echo " Archivo cargado...<br><a href='$uploadFile'>Open File</a> &nbsp;&nbsp;&nbsp; <a href='deletefile.php?filename=".$uploadFile."'>Del ete File</a>

";*/
echo "<img src=\"image/load.png\" alt=\"Cargado\"><br>
Su archivo fue cargado correctamente, <br>por favor haga click en siguiente para continuar..";

}
else {

echo "<img src='image/loader.gif' alt='loading...' /> ";
}

}
El sistema funciona del siguiente modo al inicio sale una ventana la cual tiene el campo para hacer el upload con AjaxFileUploader se carga un iframe, a la hora de cargar el archivo automaticamente manda a llamar el archivo Java Script y manda el post al archivo imageUpload donde sube el archivo al servidor, ahora el archivo si lo sube y como tengo ese archivo de subida en un documento aparte guarde su nombre en la cookie para que cuando le den siguiente vea que realmente se subio el archivo, si es lo contrario se le manda un mensaje de error que dice, "Debe subir el archivo" pero como no me reconoce la cookie pues se queda ahi aunque el archivo ya haya sido subido al servidor.