Foros del Web » Programando para Internet » PHP »

Cookies en php

Estas en el tema de Cookies en php en el foro de PHP en Foros del Web. Hola que tal, llevo dias peleando con IE ya que no me guarda las cookies, en firefox si las guara pero en IE no y ...
  #1 (permalink)  
Antiguo 22/03/2010, 07:53
 
Fecha de Ingreso: julio-2009
Mensajes: 29
Antigüedad: 14 años, 9 meses
Puntos: 0
Cookies en php

Hola que tal, llevo dias peleando con IE ya que no me guarda las cookies, en firefox si las guara pero en IE no y ya el cliente esta presionando mucho, les pongo el codigo para que vean como guardo las cookies.

Código PHP:
setcookie("doc",$uploadFile,time()+3600
$uploadFile es el nombre de un documento que subo al servidor y lo guardo en la cookie, ahora no solo con esa cookie tengo problema si no que tambien para guardar las sesiones del usuario, como uso xajax, a la hora de iniciar session la guardo en la cookie y si el usuario actualiza checo si la cookie existe y si no existe le mueestra un mensaje que dice que debe de inicar sesion.......

Espero alguien pueda ayudarme llevo dias sin dormir buscando la solucion y no le hayo

Por su atencion muchas gracias :) espero alguien sepa como solucionar el problema
  #2 (permalink)  
Antiguo 22/03/2010, 08:03
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Cookies en php

Lo primero es que si IE no guarda las cookies es que tienes declarado en el navegador que no las guarde. Para ello debes activarlo. Yo te sugiero que borres el cache con todos los cookies y vuelvas a crearlas. El problema de IE es que tiende a mostrar lo que se haya guardado por primera vez si es que no ve algún cambio en la barra de direcciones. Luego crea las cookies y hazle un var_dump a $_COOKIES a ver si se almacenó.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 22/03/2010, 08:28
 
Fecha de Ingreso: julio-2009
Mensajes: 29
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Cookies en php

Que tal abimaelrc primero te agradesco tu respues e hice lo que mencionaste, borre cookies del IE y en el codigo le pusiste el var_dump a la cookie si me guardo la cookie pero solo de forma temporal ya que si le doy actualizar dos veces me vuelve hacer lo mismo me cierra las sesiones y las cookies no las reconoce.

No se si tengan alguna solucion para esto se los agradecere eternamente...
  #4 (permalink)  
Antiguo 22/03/2010, 08:32
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Cookies en php

¿Qué tienes hecho? Postea tu código para que te puedan ayudar. Está raro que digas que las almacena en forma temporal. Debe ser que tienes declarado también en el mismo código que destruya los cookies.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 22/03/2010, 09:01
 
Fecha de Ingreso: julio-2009
Mensajes: 29
Antigüedad: 14 años, 9 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.

Etiquetas: cookies
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:03.