Con quién reportar "error" del foro?

Iniciado por 1mpuls0, 17 Julio 2013, 17:26 PM

0 Miembros y 1 Visitante están viendo este tema.

raul338

Hay versiones y versiones de Tapatalk, yo uso la 2, la 4 / HD no me gusta  :-\

#!drvy

Cita de: el-brujo en 27 Julio 2013, 22:56 PMSi alguien sabe arreglarlo le daré una golosina  ;-)



en Sources/Subs-Boards.php aproximadamente en la linea 233 y despues de:
Código (php) [Seleccionar]
elseif (isset($_REQUEST['sa']) && $_REQUEST['sa'] == 'unreadreplies')
{


Añadir:
Código (php) [Seleccionar]
@session_start();
if($_REQUEST['topics']==='all'&&!empty($_SESSION['smf_topics_to_mark'])){$topics=$_SESSION['smf_topics_to_mark'];}
else {$topics=$_REQUEST['topics'];}




Luego en Themes/ (todos los que contengan) Recent.template.php despues de:
Código (php) [Seleccionar]
if (isset($context['topics_to_mark']) && !empty($settings['show_mark_read']))

Añadir:
Código (php) [Seleccionar]
@session_start(); $_SESSION['smf_topics_to_mark']=$context['topics_to_mark'];

Y reemplazar cualquier $context['topics_to_mark']; por all menos el de la linea que se acaba de añadir.

Saludos

jdc

Mmm, puede ser xD oye si hago un diseño elástico existe la posibilidad de que se agregue? Podríamos usar Foundation, sería un tema normal con versión mobil, nada intrusivo.

WHK

Ehhhhhh.... aun tengo casi 57543758756 páginas de post sin leer y quiero marcarlos como leidos, gracias.


el-brujo

Acabo de poner el parche de #!drvy, a ver si se soluciona.

WHK

#25
Nop no funciona, me sigue saliendo el 403

No creo que sea el apache porque mi request no sobrepasa los 420 carácteres incluyendo el dominio y el protocolo, se supone que el valor por defecto permitido de apache es de 8190:

http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestline

CitarLimitRequestLine Directive
Description:   Limit the size of the HTTP request line that will be accepted from the client
Syntax:   LimitRequestLine bytes
Default:   LimitRequestLine 8190
Context:   server config, virtual host
Status:   Core
Module:   core

This directive sets the number of bytes that will be allowed on the HTTP request-line.

The LimitRequestLine directive allows the server administrator to set the limit on the allowed size of a client's HTTP request-line. Since the request-line consists of the HTTP method, URI, and protocol version, the LimitRequestLine directive places a restriction on the length of a request-URI allowed for a request on the server. A server needs this value to be large enough to hold any of its resource names, including any information that might be passed in the query part of a GET request.

This directive gives the server administrator greater control over abnormal client request behavior, which may be useful for avoiding some forms of denial-of-service attacks.

For example:

LimitRequestLine 4094
Under normal conditions, the value should not be changed from the default. Also, you can't set this higher than 8190 without modifying the source and rebuilding.
Warning

When name-based virtual hosting is used, the value for this directive is taken from the default (first-listed) virtual host for the NameVirtualHost the connection was mapped to.

Yo pienso que debe ser alguna regla de algún mod, podrías replicar el servidor del foro en una imagen en tu pc para que pruebes deshabilitando todos los mods extras que no vienen por defecto y verás como se soluciona.

Has revisado el .htaccess por si las dudas?

#!drvy

#26
De todos modos el parche no parece estar bien aplicado. En teoría debería sustituir

https://foro.elhacker.net/markasread.html;sa=unreadreplies;topics=123-456-789-123-456-789;sesc=xxxxxx

por

https://foro.elhacker.net/markasread.html;sa=unreadreplies;topics=all;sesc=xxxxxx

PD: Y accediendo a la url tal cual tampoco funciona por lo cual me da a pensar que el fix entero no funciona xD

Saludos

WHK

Acabo de ver que ese no era el problema xD ya me di cuenta que la petición de un "archivo" con un nombre muy largo falla y por lo que estuve leyendo este error se viene desde el 2008 hasta hoy:
https://issues.apache.org/bugzilla/show_bug.cgi?id=45187

Al parecer lo que habría que hacer en ese caso es reemplazar el enlace dle botón "marcar leidos" para que se ejecute sin permalinks y modificar el mod de seo para prevenir que redireccione al permalink cuando venga desde ese botón.

Porqué a SMF se le ocurrió poner puntos y comas como separadores? eso está generando muchos problemas con los estandares.

WHK

#28
Bueno, depsués de ver que aun no hay solución me di unos 15 minutos para crear un pequeño script que automatiza el marcar como leido a todo xD

Que hay que hacer?:

1. Tener Firefox
2. Instalar el complemento GreasyMonkey ( https://addons.mozilla.org/es/firefox/addon/greasemonkey/ )
3. Crear un nuevo user-script
4. Pegar mi código:

Código (javascript) [Seleccionar]
// ==UserScript==
// @name        Elhacker.net - Mark all as read
// @namespace   elh-maar
// @description Habilita el botón para marcar todos los temas como leidos en la sección de temas no leidos.
// @include     http://foro.elhacker.net/unreadreplies.html
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @version     1
// @grant       none
// ==/UserScript==

$(document).ready(function(){
   
   /* Existe el botón para marcar como leidos? */
   if($('img[alt="Marcar TODOS los mensajes como leídos"]').length){
       
       /* Establece el evento del botón */
       $('img[alt="Marcar TODOS los mensajes como leídos"]')
          .closest('a')
          .click(function(evento){
             
              /* Previene la redirección con problemas */
              evento.preventDefault();
             
              try{
                  /* Crea la ventana de informaciones */
                  $('<div />')
                     .css({
                         position          : 'fixed',
                         width             : '400px',
                         height            : '59px',
                         top               : '50%',
                         left              : '50%',
                         marginLeft        : '-200px',
                         marginTop         : '-50px',
                         backgroundColor   : '#FFFFFF',
                         color             : '#333333',
                         fontFamily        : 'Arial',
                         fontSize          : '17px',
                         border            : '1px solid #666666',
                         borderRadius      : '5px',
                         boxShadow         : '9px 12px 10px -10px #000000',
                         textAlign         : 'center',
                         paddingTop        : '41px'
                     })
                     .addClass('ehn_maar_mensaje')
                     .text('Preparando ...')
                     .appendTo($('body'));
                 
                  /* Parsea los datos convirtiendolos en objetos */
                  data = {
                      'accionUrl' : $(this).attr('href').split('topics=')[0] + 'topics=',
                      'sesc'      : ';sesc=' + $(this).attr('href').split(';sesc=')[1],
                      'ids'       : $(this).attr('href').split('-'),
                      'totalIds'  : 0
                  };
                 
                  /* Limpia los ids */
                  if(data.ids){
                     for(_llave in data.ids){

                         /* Remueve la basura del costado izquierdo del id */
                         if(data.ids[_llave].indexOf('=') > -1)
                             data.ids[_llave] = data.ids[_llave].split('=')[1];
                         
                         /* Remueve la basura del costado derecho del id */
                         if(data.ids[_llave].indexOf(';') > -1)
                             data.ids[_llave] = data.ids[_llave].split(';')[1];
                     }
                     
                      data.totalIds = data.ids.length;
                     
                      /* Envía los ids al servidor de 5 en 5 */
                      for(var loop1 = 1; loop1 <= data.totalIds; loop1 = loop1 + 5){
                         
                          /* Hay ids? */
                          if(data.ids.length){
                             
                              /* candidatos de ids a enviar */
                              idsEnviar = new Array();
                             
                              for(var loop2 = 1; loop2 <= 5; loop2++)
                                 
                                  /* Aun hay ids? */
                                  if(data.ids.length)
                                     
                                      /* Completa el stack */
                                      idsEnviar.push(data.ids.pop());
                             
                                  else /* No hay mas ids */
                                      break;
                             
                              /* Hay ids candidatos a enviar? */
                              if(idsEnviar.length){
                                 
                                  $('.ehn_maar_mensaje').text('Marcando del ' + loop1 + ' al ' + (loop1 + (idsEnviar.length - 1)) + ', de ' + data.totalIds + ' ...');
                                 
                                 /* Envía la solicitud al servidor */
                                 $.ajax({
                                      url      : data.accionUrl + idsEnviar.join('-') + data.sesc,
                                      type : 'get',
                                      cache : false,
                                      async    : false
                                  });
                              }
                             
                          }else{
                              /* No hay mas ids */
                              break;
                          }
                      }
                     
                      $('.ehn_maar_mensaje').text('Finalizado! Redireccionando ...');
                      document.location.reload();
                     
                  }else{
                      /* No hay ids */
                      alert('No hay mensajes para marcar como leido');
                  }
                 
              }catch(e){
                  /* Problema con el código? */
                  alert('Error: ' + e.message);
              }
          });
   }
});


Después cierran todas las ventanas del greasymonkey y lo dejan activado.

Ahora cada ves que entren a la sección de temas no leidos ( http://foro.elhacker.net/unreadreplies.html ) y le den click al botón de marcar como leidos a todos aparecerá un recuadro que dice "marcando x de 45 ..." y lo que hace es lo siguiente:

Como el problema del servidor es procesar las urls largas tomé todos los ids que van por url y los agrupé y hago que se envíen de 5 en 5 y listo :D , cuando termina dice "Redireccionando ..." y verás que tus temas no leidos desaparecieron:





Saludos.

AlbertoBSD

Barbaro WHK, el otro dia tarde algo de tiempo marcando todo como leído, después de tener algunos años sin ver lo que hay en el foro ufff
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW