aiuto php

Pubblicità
niet.

qua la index.php
PHP:
<?php
require_once 'core/main.php';

$db = new dbmanager;
//var_dump($db->query());

//if (!empty($db->query()) || !$db->query() == false) {
//    echo '<div class="panel">'.var_dump($db->query()).'</div>';
//}

if (!empty($_POST)) {
    //echo $_POST['username'];
    echo core::sanitize($_POST['username'], 'string');
}

?>
<form action="" method="POST">
    <label for="username" style="font-family: foo; font-size: 12px;">Username or Email:</label><br><br>
    <input type="text" name="username" style="width:250px;"><br><br>
    <label for="password" style="font-family: foo; font-size: 12px;">Password:</label><br><br>
    <input type="password" name="password"  style="width:250px;"><br><br>
    <label for="remember" style="font-family: foo; font-size: 12px;">Remember me!</label>
    <input type="checkbox" name="ricorda" value="ricordapass" checked><br>
    <input type="submit" value="Login" style="width:150px; font-family: foo;">
    <input name="_token" value="" type="hidden">
</form>


quel codice (<script>alert()</script>) serve per far capire che io, malintenzionato, se un input non è filtrato e validato, posso far eseguire un qualsiasi codice javascript (o SQL) al tuo sito.



probabilmente ho un problema io duro di comprendonio.. :)

ho capito che quella funzione javascript serve al tizio per cercare di fare qualcosa di losco...

ma dalla tua immagine precedente non capisco se quello script lo devo inserire io x emettere un controllo sul campo

quindi per intenderci l'alert

oppure

se a me basta avere dichiarato questo sul mio campo

PHP:
if (!empty($_POST)) {
    //echo $_POST['username'];
    echo main::sanitize($_POST['username'], 'string');
}

e quindi già questo controlla quel campo...
 
la seconda che hai detto.

L'alert serve per controllare che il controllo funzioni (scusa il gioco di parole..)
 
ok però non ho capito come lanciare l'alert su submit, perchè dichiarato nella pagina è come se partisse al page load
 
Nel form, invece dell'username, scrivi lo script.
Poi premi il bottone login

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
ah ok ho capito...

quindi dentro il campo username

ecco ora mi è chiaro
 
io la prova l'ho fatta ma non stampa nulla boh

HTML:
<input type="text" name="username" style="width:250px;" value="<script>alert('test');</script>" />
 
sto ancora provando

ho scritto dentro la classe db una funzione login

con questo comando?

echo '<script>alert("mi sono loggato ora!")</script>';

è corretto??

questo il comando nella index

PHP:
if (!empty($_POST)) {
    //echo $_POST['username'];
    echo main::sanitize($_POST['username'], 'string');
    $db->login();

}



poi su db

PHP:
  public function login(){
        // do some stuff
        echo '<script>alert("mi sono loggato ora!")</script>';
    }
 
Nel frattempo continuo a provare usando esempi online ma a me da mai il risultato sperato

PHP:
public function login($username, $password){
        // do some stuff
        //echo '<script>alert("mi sono loggato ora!")</script>';

        $sql = $this->_pdo->prepare("SELECT username FROM users WHERE (username = '$username' or email = '$username') and password = '$password'");
        $sql->execute();
        $res = $sql->fetchAll();
        return $res;

nella index ho fatto cosi:

PHP:
if(!empty($_POST)) {
// username and password sent from form
    echo main::sanitize($_POST['username'], 'string');
    $myusername = mysqli_real_escape_string($db, $_POST['username']);
    $mypassword = mysqli_real_escape_string($db, $_POST['password']);
    $db->login($myusername,$mypassword);

    session_register("myusername");
    $_SESSION['login_user'] = $myusername;
    echo '<script> hide_login(); </script>';


}else{
    //header("location: error.php");
 
Scusami ma in questi giorni non ho proprio potuto scrivere qua sul forum..


io la prova l'ho fatta ma non stampa nulla boh

HTML:
<input type="text" name="username" style="width:250px;" value="<script>alert('test');</script>" />

Niet!!! Lo script non lo devi scrivere nel campo value o nel codice della pagina php. Lo devi scrivere sul browser come se fossi un utente che deve effettuare il login.


sto ancora provando

ho scritto dentro la classe db una funzione login

con questo comando?

echo '<script>alert("mi sono loggato ora!")</script>';

è corretto??

questo il comando nella index

PHP:
if (!empty($_POST)) {
    //echo $_POST['username'];
    echo main::sanitize($_POST['username'], 'string');
    $db->login();

}



poi su db

PHP:
  public function login(){
        // do some stuff
        echo '<script>alert("mi sono loggato ora!")</script>';
    }

Si è corretto.


Nel frattempo continuo a provare usando esempi online ma a me da mai il risultato sperato

PHP:
public function login($username, $password){
        // do some stuff
        //echo '<script>alert("mi sono loggato ora!")</script>';

        $sql = $this->_pdo->prepare("SELECT username FROM users WHERE (username = '$username' or email = '$username') and password = '$password'"); //ERRATO (vedi sotto punto 1 e 2)
        $sql->execute();
        $res = $sql->fetchAll();
        return $res;

nella index ho fatto cosi:

PHP:
if(!empty($_POST)) {
// username and password sent from form
    echo main::sanitize($_POST['username'], 'string');
    $myusername = mysqli_real_escape_string($db, $_POST['username']);
    $mypassword = mysqli_real_escape_string($db, $_POST['password']);
    $db->login($myusername,$mypassword);

    session_register("myusername");
    $_SESSION['login_user'] = $myusername;
    echo '<script> hide_login(); </script>';


}else{
    //header("location: error.php");

1) Il PDO prepare è sbagliato, non si possono verificare le variabili in quel modo (vedi manuale).
2) La password non si può confrontare tramite query in quel modo perchè la devi criptare. La devi estrarre tramite query e poi verificarla tramite un'apposita funzione (vedi password_verify e/o hash_equals).
 
grazie della risposta ho aperto un nuovo thread perchè questo è incasinato...

ancora non sono passato alla login completa con sql,
ma sto simulando le funzioni per poi completarle

necessito dell'aiuto perchè probabilmente qualcosa non va
 
Pubblicità
Pubblicità
Indietro
Top