Avatar billede bing89 Nybegynder
12. november 2013 - 20:24 Der er 4 kommentarer og
1 løsning

Validering på brugernavne php / jquery

Jeg er ved at lave en side hvor man skal kunne oprette sig som bruger.. Dertil prøver jeg via jquery at validere på om brugernavnet er optaget...

Mit problem er at den bliver ved med at sige mit "$output" er falsk...

Mine koder:

Jquery:

$(document).ready(function() {
    $('#opretbrugerform').validate({
        rules: {
            brugernavn: {
                required: true,
                remote : "check-username.php"
            }
        },
        messages: {
            brugernavn: {
                required: "Brugernavn skal udfyldes",
                remote: 'Brugernavnet er optaget'
            }
        }
    });
});

PHP (fil: check-username.php)

<?php
include 'sqli/connect.sqli.php';

if($checkusername = $objCon->prepare('SELECT brugernavn FROM mouritzUsers WHERE brugernavn=?')){
    $checkusername->bind_param('s', $brugernavnet);
    $brugernavnet = $_POST["brugernavn"];
    $checkusername->execute();
    $checkusername->store_result();
    if($checkusername->num_rows > 0){
        $output = true;
    } else{
        $output = false;
    }
    echo json_encode($output);
    $checkusername->close();
}
?>
Avatar billede moddi100 Seniormester
12. november 2013 - 22:42 #1
Hvad sker der, såfremt du indsætter et eksisterende brugernavn således:

// Ændre dette:
$brugernavnet = $_POST["brugernavn"];

// Til dette:
$brugernavn = 'admin';


Hvor admin altså er brugernavnet på en eksisterende bruger.
Avatar billede bing89 Nybegynder
12. november 2013 - 22:49 #2
Så får jeg true ud af det :)

Mit input felt, har både id og name = "brugernavn"....
Avatar billede moddi100 Seniormester
12. november 2013 - 23:00 #3
Så ligger fejlen i overførsel af data fra javascript -> php. Prøv i første omgang blot at anvende $_GET i stedet for $_POST. Alternativt kan det være dit input felt der anvender et andet navn.

$brugernavnet = $_POST["brugernavn"];

// skal blive til
$brugernavnet = $_GET["brugernavn"];


Du kan jo prøve at outputte hvad du modtager i php. Afvikl på siden som normalt, og brug browserens javascript konsol til at se output:

PHP (fil: check-username.php)
<?php
echo json_encode($_POST);
exit;

...

?>
Avatar billede Stickano Nybegynder
13. november 2013 - 14:38 #4
Prøv med mysqli_num_rows();

Du kan evt,

$uname = $_POST['brugernavn'];

$sql = 'SELECT brugernavn FROM mouritzUsers WHERE brugernavn="'.$uname.'"';

$query = mysqli_query($objCon,$sql)or die(mysqli_error($objCon));

$num = mysqli_num_rows($query);

if($num == true){
  $output = true;
}else{
  $output = false;
};

Burde fungere.
Avatar billede bing89 Nybegynder
14. november 2013 - 11:16 #5
#4

Jeg fik det selv løst med lidt Ajax... :) Har dog bare stillet mig i et nyt dilemma :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester