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

    problema con delle variabili(?)

    ciao a tutti! vorrei condividere con voi un pezzetto di un mio codice che attualmente mi da errore, si tratta di parte di uno script di registrazione, se l'utente erra lo script si blocca inserendo l'errore in un array, questa è la parte dove invece si procede alla registrazione.

    Codice PHP:
    if (empty ($errore))
    $password md5($_POST['password']);
    $var md5(rand()); 
    $query 'INSERT INTO utenza (nome, cognome, username, password, verifica, domanda, risposta, numero_carta, carta, mail)  
    VALUES  ("' 
    $_POST['nome'] . '", 
     "' 
    $_POST['cognome'] . '",  
     "' 
    $_POST['username'] . '",         
      ".$password.",         
      ".$verifica.", 
     "' 
    $_POST['domanda'] . '",
      "' 
    $_POST['risposta'] . '", 
     "' 
    $_POST['num_carta'] . '",  
       ' 
    $_POST['carta'] . ', 
        "' 
    $_POST['mail'] . '")';  
    mysql_query($query,$db) or die (mysql_error($db));
     
    $to $_POST['mail'];
     
    $soggetto "the last one step!";
     
    $testo "welcome to miosito community " $_POST['username']
     
    "!
    to activate your account you must only click on the following link:
    " "www.miosito/activate.php?chiavediattivazione=" 
    $var 

    Thank you for choosing to work with us! :) !"
    $from_address ='noreply@miosito.com'$headers 'From: ' $from_address "\r\n";
     
    $success mail($to$soggetto$testo$headers); 
    if (
    $success)
    { echo 
    '<html><head><title>mail sent</title><link rel="stylesheet" type="text/css" href="default.css"/></head><body><table class="topbar" frame="hsides"><tr><td> <div align="center" class="infoform"> okay, is almost done! you just need to confirm your information by clicking the link sent to you via email </div></td></tr></table></body></html>'
    }     

    dal debug sebra ch'io sbagli la sintassi quando inserisco il messaggio nella variabile, qui:

    Codice PHP:
     $testo "welcome to miosito community " $_POST['username']  "!
    to activate your account you must only click on the following link:
    "
    "www.miosito/activate.php?chiavediattivazione=" 
    $var  
    Thank you for choosing to work with us! :) !"
    $from_address ='noreply@miosito.com'$headers 'From: ' $from_address "\r\n"
    se è solo questo il problema mi potete suggerire la sintassi corretta per questo genere di caso? grazie mille!!

  2. #2
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Hai dimenticato il punto di concatenazione dopo le prime due variabili e fra le due stringhe racchiuse fra i doppi apici

    Poi mancano un po' di escape ai doppia apici, ma immagino li abbia mangiati il forum.

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  3. #3
    che stupido!! grazie mille!

  4. #4
    giusto per fare il pignolo: mai sentito parlare di sql injection ?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Originariamente inviato da Santino83_02
    giusto per fare il pignolo: mai sentito parlare di sql injection ?
    perchè mai spingersi a tanto?? codice sprecato

  6. #6
    digitos è abbastanza demoralizzante quello che scrivi,

    non sono un professionista, sono solo un ragazzo che sta cercando di imparare qualcosa in vista dell'università.

    piuttosto potresti aiutarmi suggerendomi come rendere più sicuro quello che scrivo in modo ch'io possa migliorarmi, per lo meno credo sia

    questo l'obbittivo di un forum, non dire che sarebbe codice sprecato.

  7. #7
    In pratica non è mai consigliabile effettuare delle query sul DB senza verificare a priori la concretezza dei dati passati in input. Dai un'occhiata QUI
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    ma i controlli li ho fatti, solo che venivano prima, non aveva senso metterli nel post:

    Codice PHP:
     require 'log_db.php';
     
    $db mysql_connect (MYSQL_HOSTMYSQL_USERMYSQL_PASSWORD) or die ('we have same problem with our database, check later!');
     
    mysql_select_db (MYSQL_DB$db) or die (mysql_error ($db)); 
     
    $errore = array(); 
     
    $nome = isset($_POST['name']) ? trim ($_POST['name']) : ''; if (empty ($nome)) {$errore[] = urlencode ('forgot to type your name!');} 
     
    $cognome = isset($_POST['surname']) ? trim($_POST['surname']) : ''; if (empty ($cognome)) {$errore[] = urlencode('forgot to type you surname!');}
     
    $username = isset($_POST['username']) ? trim($_POST['username']) : ''; if (empty ($username)) {$errore[] = urlencode('forgot to type your username');} 
     
    $query 'SELECT username FROM users WHERE username = "' $_POST['username'] .'"'$result mysql_query ($query$db) or die (mysql_error()); 
    if (
    mysql_num_rows($result) > 0)
    $errore[] = urlencode('username already in use!');} 
    $query 'SELECT email FROM users WHERE email = "' $_POST['email'] .'"'$result mysql_query ($query$db) or die (mysql_error()); 
    if (
    mysql_num_rows($result) > 0
    $errore[] = urlencode('email already in use!');}  
    $password = isset($_POST['password']) ? trim($_POST['password']) : ''; if (empty ($password)) {$errore[] = urlencode('forgot to type your password!');} 
     if (
    $_POST['password'] != $_POST['password2']) {$errore[] = urlencode('the passwords are not the same!');}  
    $conta_password strlen ($_POST['password']);
     if ( 
    $conta_password 7) {$errore[] = urlencode('type a password whit 7 words or more!');} 
     
    $mail = isset($_POST['email']) ? trim($_POST['email']) : ''; if (empty ($mail)) {$errore[] = urlencode('forgot to type your mail!');}  
    $chiocciola count(explode'@'$_POST['email'] )) - 1;     
    if(
    $chiocciola != 1
     {
    $errore[] = urlencode('you did not insert an at!(@)');}       
    if(
    strpos($_POST['email'],';') || strpos($_POST['email'],',') || strpos($_POST['email'],' '))
     { {
    $errore[] = urlencode('your email is not correct');}     }      
    if(!
    preg_match'/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/'$_POST['email'])) { $errore[] = urlencode('your email is not correct');     } 
    $carta $_POST['num_carta']; 
    if (!
    is_numeric($carta)) { $errore[] = urlencode('insert a valid number of card!');     } 
    $query 'SELECT email FROM users WHERE email = "' $_POST['mail'] .'"'$result mysql_query ($query$db) or die (mysql_error());
     if (
    mysql_num_rows($result) > 0) { $errore[] = urlencode('email already in use!');} 
     
    $domanda = isset($_POST['domanda']) ? trim ($_POST['domanda']) : ''; if (empty ($nome)) {$errore[] = urlencode ('type a security question!');} 
     
    $risposta = isset($_POST['risposta']) ? trim ($_POST['risposta']) : ''; if (empty ($nome)) {$errore[] = urlencode ('type an answer to your security question!');} 
     
    $num_carta = isset($_POST['num_carta']) ? trim ($_POST['num_carta']) : ''; if (empty ($nome)) {$errore[] = urlencode ('insert a valid number for your credit card!');} 
    $conta_password_carta strlen ($_POST['num_carta']);  
    if ( 
    $conta_password_carta 16
    {
    $errore[] = urlencode('insert a valid number for your credit card!.');}  
    if (empty (
    $errore)) { 
    parto con le istruzioni.

    dopo aver scritto il post ho aggiornato anche le varie variabili con l'escape_string così:

    Codice PHP:
    if 
    (empty (
    $errore))
     { 
    $password md5($_POST['password']);
    $var md5(rand()); 
    $name mysql_real_escape_string($_POST['name']); 
    $surname mysql_real_escape_string($_POST['surname']); 
    $username mysql_real_escape_string($_POST['username']); 
    $domanda_segretamysql_real_escape_string($_POST['domanda_segreta']); 
    $risposta mysql_real_escape_string($_POST['risposta']); 
    $carta mysql_real_escape_string($_POST['carta']); 
    $email mysql_real_escape_string($_POST['email']);  
    $query 'INSERT INTO users (nome, cognome, username, password, verifica, domanda, risposta, numero_carta, carta, email)  VALUES  ("' $name '",  "' $surname '",  "' $username '",  "' $password '",  "' $var '",  "' $domanda_segreta '",  "' $risposta '",  "' $carta '",  "' $carta '",  "' $email '")';  mysql_query($query,$db) or die (mysql_error($db)); 
    non mi sembra di aver lasciato tutto al caso :S
    ora do un'occhiata al manuale comunque non avevo visto esistesse la sezione sulle injection grazie se ci sono altre opzioni importati che ho scordato fammele notare

  9. #9
    Apprezzo chi a seguito di avvertimenti, seppur in modo più o meno maldestro, si adopera per colmare i problemi.

    Il tuo codice è procedurale ed è considerabile "passabile" se, come mi sembra di capire, stai iniziando da poco e quello che stai facendo è una sorta di "script didattico" fatto per imparare. Fra un pò potrai iniziare con la OO (ma tempo a tempo).

    Solo una cosa:
    SCRIVI CODICE IN MANIERA ORDINATA:
    - ritorni a capo;
    - i tab;
    - i commenti.

    Non solo perchè altrimenti in questo forum nessuno leggerà mai le tue righe incasinate, ma anche per te che ad aumentare della complessità non ci capirai più nulla!
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  10. #10
    eheheh lo so, sul mio editor sono ordinate, il problema è che quando lo posto sul forum si disordina tutto e non ho ancora preso la mano nel giostrarmi con le dimensioni questione di tempo
    per i commenti hai ragione, li ometto, dalla prossima volte cercherò di inserirli, e grazie per la fiducia, che ce ne vuole

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.