Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
Muerte

[FIX] Evitar que te publiquen shout en blanco

Recommended Posts

Yo lo preferiría que se reemplazara con un solo nl y no con el tag html br para guardar en la bd, después al mostrar en html nl2br se encargaría del resto xD

Igual funciona, esperemos que se aplique para la descarga oficial :) 

Share this post


Link to post
Share on other sites
hace 9 minutos, Kmario19 dijo:

Yo lo preferiría que se reemplazara con un solo nl y no con el tag html br para guardar en la bd, después al mostrar en html nl2br se encargaría del resto xD

Igual funciona, esperemos que se aplique para la descarga oficial :) 

pues como usa la función de bbcode se convertiría de igual manera a etiqueta y se guarda de esa forma, solo respete lo que esta por defecto pero si, seria muchisimo mejor asi jaja

  • Like 1
  • Downvote 1

Share this post


Link to post
Share on other sites

Tal vez utilizando las propiedades de HTML5, en este caso el "required", sólo hay que ver si se puede saltar esa propiedad desde la consola xD

Share this post


Link to post
Share on other sites

No entiendo el código. Solo con trim() ya solucionas el problema. Si el usuario escribe \n, \r o \t el shout NO está vacío, no entiendo porque quieres que el mensaje muestre que sí lo está. Los caracteres \n, \r y \t escritos en un campo de texto NO equivalen a un salto de línea, return o tabulación, ¿para qué reemplazarlos o eliminarlos?

 

Lo puedes comprobar con este pequeño ejemplo: http://main.xfiddle.com/e76a9f05/ejemplo_trim.php

 

Código del ejemplo:

<?php
$shout = !empty($_GET['shout']) ? $_GET['shout'] : '';
$shout = trim($shout);
?>
<form>
	<textarea name="shout"><?php echo $shout ?></textarea>
	<br>
	<button>Enviar</button>
</form>
<hr>
<p>
<?php
if($shout) {
	echo '<b>echo($shout): </b>';
	echo($shout);
	echo '<br><br><b>var_dump($shout): </b>';
	var_dump($shout);
	echo '<br><br>';
}
echo '<b>¿Está vacio?: </b>';
var_dump(!$shout);
?>
</p>

 

Share this post


Link to post
Share on other sites
hace 25 minutos, Rhuan dijo:

No entiendo el código. Solo con trim() ya solucionas el problema. Si el usuario escribe \n, \r o \t el shout NO está vacío, no entiendo porque quieres que el mensaje muestre que sí lo está. Los caracteres \n, \r y \t escritos en un campo de texto NO equivalen a un salto de línea, return o tabulación, ¿para qué reemplazarlos o eliminarlos?

 

La cosa es que trim elimina espacios al inicio y al final de la cadena pero no en medio, esto es lo que hizo @Muerte. Incluso en tu ejemplo se puede notar que los saltos de líne concurrentes en medio de la cadena persisten:

image.png

La idea del fix es dejar un solo salto de línea.

Pdata: Cambié la etiqueta <p> por <pre> para poder apreciar los saltos de línea.

Share this post


Link to post
Share on other sites
hace 34 minutos, Kmario19 dijo:

 

La cosa es que trim elimina espacios al inicio y al final de la cadena pero no en medio, esto es lo que hizo @Muerte. Incluso en tu ejemplo se puede notar que los saltos de líne concurrentes en medio de la cadena persisten:

image.png

La idea del fix es dejar un solo salto de línea.

 

Ah, no había entendido eso de eliminar los saltos de línea del medio. Pero aún así se puede saltar saltar fácilmente, por ejemplo, poniendo un espacio antes del salto de línea. Ejemplo: https://regex101.com/r/1ZNTut

 

Y sigo sin verle sentido a cambiar los saltos de línea por <br> y reemplazar "\n, \r,  y \t" por "n, r, y t".

 

Edito:

Me acabo de dar cuenta que su código tampoco hace lo que dices, no reemplaza los saltos de líneas seguidos por un solo <br> sino que reemplaza cada uno de los saltos que están seguidos por un <br> diferente. Para hacer lo que tú dices sería algo así: /([\r\n])+/ pero todavía tiene el error que he mencionado.

Edited by Rhuan
  • Like 1

Share this post


Link to post
Share on other sites
hace 2 horas, Rhuan dijo:

Ah, no había entendido eso de eliminar los saltos de línea del medio. Pero aún así se puede saltar saltar fácilmente, por ejemplo, poniendo un espacio antes del salto de línea. Ejemplo: https://regex101.com/r/1ZNTut

Tienes razón, ahí probe colocando |\s+ (actualicé el ejemplo) :ph34r:

 

hace 2 horas, Rhuan dijo:

Y sigo sin verle sentido a cambiar los saltos de línea por <br> y reemplazar "\n, \r,  y \t" por "n, r, y t".

Yo tampoco veo sentido pero al menos ya no tendrá saltos de línea exagerados (? -nose

 

hace 2 horas, Rhuan dijo:

Me acabo de dar cuenta que su código tampoco hace lo que dices, no reemplaza los saltos de líneas seguidos por un solo <br> sino que reemplaza cada uno de los saltos que están seguidos por un <br> diferente. Para hacer lo que tú dices sería algo así: /([\r\n])+/ pero todavía tiene el error que he mencionado.

No he probado, y ya que estás en eso prueba con el ejemplo que hiciste en regex.com a ver si funciona a ver si le sacamos una solución más óptima :ZIqdO:

  • Like 1

Share this post


Link to post
Share on other sites

me da gusto que se interesen por solucionar este problema por aqui dejo esto si alguien tiene duda de que se esta hablando y quizas ya quede mas claro nuestro dilema jeje y bueno hasta ahora yo le di esa solucion pero seguro que un programador mas experimentado podra encontrar otra solucion yo personalmente me quedo con esta porque prove muchas y la que mas me gusto fue esta en fin

 

http://php.net/manual/es/function.str-replace.php

 

http://php.net/manual/es/function.preg-replace.php

 

http://php.net/manual/es/function.trim.php

 

en fin por ahi puede que esten confundiendo las funciones en si, y mi idea de primero comprobar si esta vació el campo, después limpiarlo del exceo de saltos de linea y combinacion de caracteres para meter saltos de linea o tabulaciones, pero no creo estar mal porque taringa hace lo mismo y bueno ami me molesta que se aproveche de cosas tan tontas para molestar en los sitios y prueba de eso es que yo lo hice en compartinga.com jeje y no creo que al dueño le diera mucho gusto porque cada ves me eliminaba los shouts larguisimos jaja

  • Like 1
  • Downvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Miguel92
      Problemas al comentar y/o enviar mensaje 
      después de haber agregado el wysibb
       
      Si actualizaste y te has topado con este problema, bueno te traigo la solución.
       
      [1] SOLUCIONADO: No puedo comentar
      Ir a default/js/funciones.js y buscan
          // NUEVO COMENTARIO     nuevo: function(mostrar_resp, comentarionum){         // EVITAR FLOOD         $('#btnsComment').attr({'disabled':'disabled'});         //         var textarea = $('#body_comm');         var text = textarea.val(); y en la parte que dice .val(); lo cambian por .bbcode();
              var text = textarea.bbcode();  
      [2] SOLUCIONADO: No puedo previsualizar el comentario
      Ir a default/js/funciones.js y buscan
      // VISTA PREVIA DEL COMENTARIO     preview: function(id, type){         var textarea = (type == 'new') ? $('#' + id) : $('#edit-comment-' + id);         var text = textarea.val(); lo mismo que el paso anterior
              var text = textarea.bbcode(); 16/05/2018
      Con la nueva actualización del script phpost_1.3.0.000 tiene este problema, en el momento que lo estaba haciendo me había funcionado de la manera que esta publicado..luego tuve el error de no poder editar el comentario y la solución fue revertir este paso y de esa manera edita y previsualiza
       
       
      SOLUCIONADO: No puedo previsualizar el mensaje
      Ir a default/js/funciones.js y buscan
          // VISTA PREVIA DEL MENSAJE     previewms: function(id, type){         var textarea = (type == 'new') ? $('#' + id) : $('#edit-comment-' + id);         var text = textarea.val(); lo mismo que el paso anterior
              var text = textarea.bbcode();  
      [3] SOLUCIONADO: No puedo enviar mensaje desde "Mensajes"
      Ir a default/js/acciones.js y buscan
          // RESPONDER     responder: function(mp_id){         this.vars['mp_id'] = $('#mp_id').val();         this.vars['mp_body'] = encodeURIComponent($('#respuesta').val()); // Fix: 14/12/2014 - 1.1.000.9 lo mismo que el paso anterior  .val(); lo cambian por .bbcode();
              this.vars['mp_body'] = encodeURIComponent($('#respuesta').bbcode()); // Fix: 14/12/2014 - 1.1.000.9  
      En el caso de encontrar más lo ire colocando!
    • By Tronlar
      Hola a [email protected],os dejo como hacer funcionar el sistema de captcha en las V5,V6,lo acabo de probar y funciona bien.
       
       
      Ejecutar esta consulta:
      ALTER TABLE `w_configuracion` ADD `pkey` VARCHAR(55) NOT NULL AFTER `offline_message`, ADD `skey` VARCHAR(55) NOT NULL AFTER `pkey`;  
      En c.admin.php --> inc/class/c.admin.php
       
      Buscar:
      'newr' => empty($_POST['newr']) ? 0 : 1);
      Cambiar por:
      'newr' => empty($_POST['newr']) ? 0 : 1, 'pkey' => $tsCore->setSecure($_POST['pkey']), 'skey' => $tsCore->setSecure($_POST['skey']),  
       
      Buscar:
      '\', `offline_message` = \'' . $c['offline_message'] .  
      Añadir al lado:
      '\', `pkey` = \'' . $c['pkey'] . '\', `skey` = \'' . $c['skey'] .
      Tiene que quedar así:
      '\', `offline_message` = \'' . $c['offline_message'] . '\', `pkey` = \'' . $c['pkey'] . '\', `skey` = \'' . $c['skey'] .  
       

      En c.registro.php --> inc/class/c.registro.php
       
      Buscar:
      'user_captacha_challenge' => $_POST['recaptcha_challenge_field'], 'user_captacha_response' => $_POST['recaptcha_response_field'],  
      Cambiar por:
      'user_captcha' => $_POST['g-recaptcha-response'],  
      Buscar:
      'captacha' => 'El código es incorrecto'
      Cambiar por:
      'captcha' => 'Validación incorrecta',  
       
      Buscar:
      // CAPTACHA require(TS_EXTRA . 'recaptchalib.php'); $robot = recaptcha_check_answer(RC_PIK,$_SERVER["REMOTE_ADDR"],$tsData['user_captacha_challenge'],$tsData['user_captacha_response']); if(!$robot->is_valid) return 'recaptcha: El código es incorrecto.';

      Cambiar por:        
      /** reCAPTCHA **/ $recaptcha = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $tsCore->settings['skey'] . '&response=' . $tsData['user_captcha'] . '&remoteip=' . $tsCore->getIP(); // Obtener respuesta $response = file_get_contents($recaptcha); // Extraer resultado $ext1 = explode('"success":', $response); $ext2 = explode(',', $ext1[1]); // Comprobar resultado $valid = trim($ext2[0]); // Devolver respuesta si es incorrecta if ($valid == 'false') { return 'recaptcha: No hemos podido validar tu humanidad'; }  
       
      registro.js --> default/js/registro.js
      registro.js --> V6/js/registro.js
       
      Buscar:
      /* reCAPTCHA */ case 'recaptcha_challenge_field': return true; break; case 'recaptcha_response_field': //Si ya paso por aca y no hubieron cambios, devuelvo el mismo status if(!force_check && this.datos[campo] === value && this.datos['recaptcha_challenge_field'] == $('#RegistroForm .pasoDos #recaptcha_challenge_field').val()) if(this.datos_status[campo]=='empty') return no_empty ? this.show_status(el, this.datos_status[campo], this.datos_text[campo]) : this.hide_status(el, this.datos_status[campo], this.datos_text[campo]); else return this.show_status(el, this.datos_status[campo], this.datos_text[campo]); //Almaceno el dato this.datos[campo] = value; this.datos['recaptcha_challenge_field'] = $('#RegistroForm .pasoDos #recaptcha_challenge_field').val(); //!empty if(empty(value)){ var status = 'empty'; var text = 'El campo es requerido'; if(no_empty) return this.show_status(el, status, text); else return this.hide_status(el, status, text); } return registro.show_status(el, 'ok', 'OK'); break; } },  

      Cambiar por:    
      /* reCAPTCHA */ case 'g-recaptcha-response': this.datos[campo] = value; //!empty if (!value) { return this.show_status($('#RegistroForm .g-recaptcha'), 'empty', 'Demuestra que eres humano'); } return registro.show_status($('#RegistroForm .g-recaptcha'), 'ok', 'OK'); break; } },  
       
      Buscar:
      case 'recaptcha': //reCAPTCHA registro.change_paso(2, true); registro.show_status($('#RegistroForm #recaptcha_response_field'), 'error', h.substring(strpos(h, ':')+2)); break;
         
      Cambiar por:
      case 'recaptcha': //reCAPTCHA registro.change_paso(2, true); registro.show_status($('#RegistroForm .g-recaptcha'), 'error', h.substring(strpos(h, ':') + 2)); break;

      t.registro.tpl --> default/templates/t.registro.tpl
      t.registro.tpl --> V6/templates/t.registro.tpl    
          
       Buscar:
      <div class="form-line"> <label for="recaptcha_response_field">Ingresa el código de la imagen</label> <div id="recaptcha_ajax"> <div id="recaptcha_image"></div> <input type="text" id="recaptcha_response_field" name="recaptcha_response_field" /> </div> <div class="help recaptcha" id="nubex"><span id="puy"></span><span><em></em></span></div> </div>  

      Cambiar por:
      <div class="form-line"> <label>Confirme humanidad:</label> <div class="g-recaptcha" data-sitekey="{$tsConfig.pkey}"></div> <div class="help"><span><em></em></span></div> </div>
         
      Buscar:
      <script type="text/javascript"> // $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ //Seteo el pais seleccionado //registro.datos['pais']='MX'; //registro.datos_status['pais']='ok'; //registro.datos_text['pais']='OK'; // registro.change_paso(1); //Genero el autocomplete de la ciudad /*$('#RegistroForm .pasoDos #ciudad').autocomplete('/registro-geo.php', { minChars: 2, width: 298 }).result(function(event, data, formatted){ registro.datos['ciudad_id'] = (data) ? data[1] : ''; registro.datos['ciudad_text'] = (data) ? data[0].toLowerCase() : ''; if(data) $('#RegistroForm .pasoDos #terminos').focus(); });*/ mydialog.procesando_fin(); }); //Load recaptcha $.getScript("http://www.google.com/recaptcha/api/js/recaptcha_ajax.js", function(){ Recaptcha.create('6LcXvL0SAAAAAPJkBrro96lnXGZ56TBRExEmVM3L', 'recaptcha_ajax', { theme:'custom', lang:'es', tabindex:'13', custom_theme_widget: 'recaptcha_ajax', callback: function(){ $('#recaptcha_response_field').blur(function(){ registro.blur(this); }).focus(function(){ registro.focus(this); }).attr('title', 'Ingrese el código de la imagen'); } }); }); </script>

      Cambiar por:       
      <script type="text/javascript"> // $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ //Seteo el pais seleccionado //registro.datos['pais']='MX'; //registro.datos_status['pais']='ok'; //registro.datos_text['pais']='OK'; // registro.change_paso(1); //Genero el autocomplete de la ciudad /*$('#RegistroForm .pasoDos #ciudad').autocomplete('/registro-geo.php', { minChars: 2, width: 298 }).result(function(event, data, formatted){ registro.datos['ciudad_id'] = (data) ? data[1] : ''; registro.datos['ciudad_text'] = (data) ? data[0].toLowerCase() : ''; if(data) $('#RegistroForm .pasoDos #terminos').focus(); });*/ mydialog.procesando_fin(); }); </script> <script src="https://www.google.com/recaptcha/api.js" async defer></script> <script type="text/javascript"> $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ registro.change_paso(1); mydialog.procesando_fin(); }); </script>

       m.admin_configs.tpl     --> default/templates/admin_mods/m.admin_configs.tpl            
       m.admin_configs.tpl     --> V6/templates/admin_mods/m.admin_configs.tpl    
              
      Buscar:   
      <dl> <dt><label for="ai_xat">Xat ID:</label><br /><span>Por defecto puedes agregar un chat de <a href="http://xat.com">Xat</a> para tu web, solo crea tu grupo he ingresa el nombre.</span></dt> <dd><input type="text" id="ai_xat" name="xat" maxlength="20" value="{$tsConfig.xat_id}" /> </dd> </dl> <hr />  

      Añadir debajo:
      <dl> <dt> <label for="pkey">reCaptcha pública</label> <br /><span>Clave pública de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd> <input type="text" id="pkey" name="pkey" value="{$tsConfig.pkey}" /> </dd> </dl> <dl> <dt> <label for="skey">reCaptcha secreta</label> <br /><span>Clave privada de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd> <input type="text" id="skey" name="skey" value="{$tsConfig.skey}" /> </dd> </dl> <hr />  
       
       
      Y con eso ya la tienen funcionando,saludos.


       
       
       
       
       

              
           
       
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Patrocinador



  • ×