Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Operatore Ternario o if() check

    $c_p = ($_POST['c_p'] == $_POST['c_pa']) ? sha1($_POST['c_p']) : header("Location: register.php");

    Se nei campi del form inserisco due campi diversi il codice php continua comunque il runtime.

    Ho provato a fare la stessa operazione con un if() control ma il risultato non cambia.

    Ecco una copia dei campi interessati nel form:

    <tr>
    <td><label for="c_p">Password</label></td>
    <td><input type="password" name="c_p" /></td>
    <td><label for="c_pa">... again</label></td>
    <td><input type="password" name="c_pa" /></td>
    </tr>

  2. #2
    Codice PHP:
    if ($_POST['c_p'] == $_POST['c_pa']) {
        
    $c_p sha1($_POST['c_p']);
    } else {
        
    header("Location: register.php");

    Neanche così va?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3

  4. #4
    usa lo script di satifal e dopo l'header metti un exit
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Il problema è proprio questo lui Quell'if lo ignora e lo ritiene sempre vero, quindi la parte dove c'è header non la processa nemmeno.

  6. #6
    Perchè non posti un attimino il codice HTML in cui dichiari il form...che mi viene un piccolo dubbio. Inoltre perchè non provi a loggare $_POST['c_p'] e $_POST['c_pa'].
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    <?php
    if(isset($_POST['c_s'])) {
    $c_l = (preg_match("/^[A-Z0-9._%-]+@[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z]{2,6}$/i", $_POST['c_l'])) ? mysql_real_escape_string($_POST['c_l']) : header("Location: register.php");
    if($_POST['c_p'] == $_POST['c_pa']) { $c_p = sha1($_POST['c_p']); } else { header("Location: register.php"); }
    require_once("configs.php");
    $sql = "INSERT INTO " . TABLE_PREFIX . "users (user_id, user_log, user_psw) VALUES (NULL, '{$c_l}', '{$c_p}')";
    if(mysql_query($sql, $link_identifier)) {
    echo("Account Created.");
    exit();
    } else {
    die("Error, Your email is already in use.");
    exit();
    }
    } else {
    ?>
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF

  8. #8
    <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
    <fieldset>
    <legend>
    <h1>Registration Form</h1>
    </legend>
    <table>
    <tr>
    <td><label for="c_l">Your Email</label></td>
    <td><input type="email" name="c_l" /></td>
    </tr>
    <tr>
    <td><label for="c_p">Password</label></td>
    <td><input type="password" name="c_p" /></td>
    <td><label for="c_pa">... again</label></td>
    <td><input type="password" name="c_pa" /></td>
    </tr>
    <tr>
    <td><input type="submit" name="c_s" value="Register!" /></td>
    </tr>
    </table>
    </fieldset>
    </form>

  9. #9
    Questo comunque
    codice:
    $c_p = ($_POST['c_p'] == $_POST['c_pa']) ? sha1($_POST['c_p']) : header("Location: register.php");
    e' concettualmente errato. In uno statement come quello sia la seconda parte che la terza dovrebbero restituire un valore da assegnare a $c_p, usare l'operatore ternario cosi' e' solo un modo di scrivere un if inutilmente offuscato.

    Se l'header viene ignorato, probabilmente hai gia' inviato dell'output (e hai la visualizzazione degli errori disabilitata).

  10. #10
    il codice te l'ho postato sopra, provalo.

    e poi l'operatore ternario serve a questo, è per se un if() offuscato.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.