En un WordPress header.php archivo, hay una manera de reducir este :

<?php if (is_page('about')): ?>
<script type="text/javascript">var page = "about";</script>
<?php endif ?>

<?php if (is_page('contact')): ?>
<script type="text/javascript">var page = "contact";</script>
<?php endif ?>

<?php if (is_page('gallery')): ?>
<script type="text/javascript">var page = "gallery";</script>
<?php endif ?>

a

<script type="text/javascript">
var page = "<?php echo get_current_page() ?>";
</script>
  • Se puede explicar de esa declaración? No veo ninguna razón por la que él no puede, o no debe hacer esto.
  • Estoy seguro de que al menos podría intentar resumir su postura. Sólo digo «no deberías hacer eso» no significa nada. Especialmente en un foro como ASÍ, y más aún de un usuario con una reputación como a ti mismo. Si es necesario, enviar una Respuesta detallando los argumentos en contra y una propuesta de solución alternativa.
  • no tienes mucho reputación cualquiera, así que no me pasan un montón de tiempo aquí, aunque yo intento ayudar cuando me deje caer por pedir algo. ¿por qué no hacerlo ? primero veo un posible xss (bueno, no estoy seguro, pero todavía), no me gusta la idea de <php if ?><script> var x='';</script><?php endif; ?>, y en general se debe controlar que EN js no dar a js una variable… eso es un breve resumen de por qué creo que su mala

1 Comentario

  1. 5

    OK, la ligera frotar aquí es que la is_page() función devolverá TRUE si el string es el Título de la entrada O de la Post Slug (Codex De WordPress). Así que voy a ofrecer tanto soluciones y usted puede elegir cuál de ellas funciona mejor para usted.

    <script type="text/javascript">
    <?php $pageDetails = get_page(); ?>
    var page_title = "<?php echo str_replace( '"' , '\"' , $pageDetails->post_title ); ?>";
    var page_slug  = "<?php echo str_replace( '"' , '\"' , $pageDetails->post_name  ); ?>";
    </script>

    He incluido los str_replace() poco para asegurarse de que cualquiera de los nombres de página que incluya las comillas no va a romper su Javascript.

    Y, ajustado por los comentarios por David M, el uso de JSON para hacer las cosas un poco más seguro…

    <script type="text/javascript">
    <?php $pageDetails = get_page(); ?>
    var page_title = <?php echo json_encode( $pageDetails->post_title ); ?>;
    var page_slug  = <?php echo json_encode( $pageDetails->post_name  ); ?>;
    </script>
    • el usuario define el título de ' bla bla \' y el nombre de '; alert(/XSS/);' ? kaboom…
    • Ah…Gracias. Así is_page() realiza una búsqueda.
    • Es que el caso aquí? Como los valores son generados desde dentro de WordPress (no sólo de OBTENER las variables), yo sospecho que este tipo de XSS problema sería mucho menos probable que afectan a este caso específico.
    • sería menos probable, pero todavía hay una posibilidad … vamos a dejarlo así 🙂 EOT en mi final
    • Una forma fácil y segura para lograr Lucanos objetivo es utilizar json_encode.

Dejar respuesta

Please enter your comment!
Please enter your name here