Avatar billede tobrukDk Novice
04. marts 2012 - 22:12 Der er 19 kommentarer og
1 løsning

kan blive ved med at opret 2 enes email adr

Hej

Det er sådan at man kan blive ved med at opret 2 ens email adr og man kan opret flere og flere og flere og man kan bare blive ved

og jeg kan seriøst ikke finde fejl... hvad har jeg gør galt siden at man kan blive ved med at opret ens email adr..


<form action="opretbruger_info.php" enctype="multipart/form-data"  method="post">
                            <h3>Brugerinfomation</h3>
                            <input type="email" name="email" placeholder="Email til Brugernavn**" id="opretbox_infomation">
                            <br>
                            <input type="password" name="password" placeholder="Password**" id="opretbox_infomation">
                            <br />
                            <input type="password" name="gentag" placeholder="Gentag password**" id="opretbox_infomation">
                            <h3>Infomation</h3>
                            <input type="text" name="site" placeholder="Website" id="opretbox_infomation">
                            <br>
                            <input type="text" name="facebook" placeholder="Facebook**" id="opretbox_infomation">
                            <br>
                            <input type="text" name="land" placeholder="Hvor kommer du fra**" id="opretbox_infomation">
                            <br>
                            <h3>Dj Infomation</h3>
                            <?php
                                $sql = 'SELECT * FROM musik_info';
                                $res = mysql_query($sql) or die (mysql_error());
                                $select = '<select name="kategori">';
                                while ($row=mysql_fetch_assoc($res)) {
                                $select .= '<option value="'.$row['musikid'].'">'.$row['navn_musik'].'</option>';
                                }
                                $select .= '</select>';
                                print $select;
                            ?>
                            <br>
                            <input type="text" name="djnavn" placeholder="Djnavn**" id="opretbox_infomation">
                            <br>
                            <input type="text" name="club" placeholder="Club stede/steder**" id="opretbox_infomation">
                            <br>
                            <input type="text" name="booking" placeholder="Booking email**" id="opretbox_infomation">
                            <br>
                            <input type="text" name="pris" placeholder="Pris**" id="opretbox_infomation">
                            <br>
                            <h3>Hemmeligheden - F.eks Telefon - Nr</h3>
                            <input type="text" name="hemmeligheder" placeholder="Hemmeligheden**" id="opretbox_infomation">
                            <br>
                        <h3>Profil Tekst</h3>
                          <textarea name="profiltekst" id="profiltekst" style="width:760px; height:155px;"></textarea>
                        <input type="file" name="file" id="uploadfile"><br>
                        </div>
                        <input type="submit" value="Godkendt & Opret Bruger" class="godkendt gray">
    </form>




<?php
    error_reporting(E_ALL ^ E_NOTICE);
    include("include/database/db.php");
   
    //Infomation
    $email = mysql_real_escape_string($_POST["email"]);
    $password = mysql_real_escape_string($_POST["password"]);
    $gentag = mysql_real_escape_string($_POST["gentag"]);
    $facebook = mysql_real_escape_string($_POST["facebook"]);
    $land = mysql_real_escape_string($_POST["land"]);
    $profiltekst = mysql_real_escape_string($_POST["profiltekst"]);
    $djnavn = mysql_real_escape_string($_POST["djnavn"]);
    $site = mysql_real_escape_string($_POST["site"]);
    $fk_id = mysql_real_escape_string($_POST["kategori"]);
    $club = mysql_real_escape_string($_POST["club"]);
    $booking = mysql_real_escape_string($_POST["booking"]);
    $pris = mysql_real_escape_string($_POST["pris"]);
    $hemmeligheder = mysql_real_escape_string($_POST["hemmeligheder"]);
    $errorCount = 0;
   
    $billedefilnavn = null;
   
    include("include/class.upload.php");
    $handle = new Upload($_FILES['file']);
   
    if($handle->uploaded){
            //lidt mere store billeder
            $handle->image_resize = true;
            $handle->image_ratio_y = true;
            $handle->image_x = 220;
            $handle->Process("picthumb/storeimg");
                //til profil billede lign..
                $handle->image_resize = true;
                $handle->image_ratio_crop = true;
                $handle->image_y = 75;
                $handle->image_x = 75;
                $handle->Process("picthumb");                 
        $billedefilnavn = $handle->file_dst_name;

            echo 'Billedet: '.$billedefilnavn.'<br>';
            echo "Dit billede blev upload<br>";
       
    }else{
            $billedefilnavn = 'default.jpg';
        }
       
       
    $bruger = mysql_query("SELECT * FROM brugere WHERE email='$email'");
        if(mysql_num_rows($bruger) > 0){
            header("Location: fejl_email.php");
            $errorCount++;
        }
       
    /*
    *
    *tjekker om password passer eller lign.
    *
    */
    if($djnavn == "")
    {
        header("Location: fejl_djnavn.php");
          $errorCount++;
    }
    if($password == "")
    {
        header("Location: fejl_password.php");
        $errorCount++;
    }
    if($gentag == "" || $gentag != $password)
    {
        header("Location: fejl_password.php");
        $errorCount++;
    }
    if($pris == "")
    {
        header("Location: fejl_pris.php");
        $errorCount++;
    }
    if($booking == "")
    {
        header("Location: fejl_booking.php");
        $errorCount++;
    }
    if($hemmeligheder == "")
    {
        header("index.php");
        $errorCount;
    }
    /*
      * ligger det hele inde i databasen
      * hvis der ske en fejl så bliver den sendt over til fejl siden..
      */
    if($errorCount == 0)
    {         
            $password = sha1($password);
    $sql = "INSERT INTO brugere (email,password,facebook,land,profiltekst,djnavn,site,fk_musik_info,profilbillede,club,booking,pris,hemmeligheder) "
                ."VALUES         ('$email','$password','$facebook','$land','$profiltekst','$djnavn','$site','$fk_id','$billedefilnavn','$club','$booking','$pris','$hemmeligheder')";
            $insert = mysql_query($sql) or die (mysql_error());

                if(!$insert)
                    header("Location: fejl_database.php");
                else
                    header("Location: godkendt_bruger.php");

    }
   
    ?>


Hvad er der galt siden det ikke ville virker :)



Jeg tror problem ligger her

$bruger = mysql_query("SELECT * FROM brugere WHERE email='$email'");
        if(mysql_num_rows($bruger) > 0){
            header("Location: fejl_email.php");
            $errorCount++;
        }
Avatar billede kjeldsted Novice
05. marts 2012 - 00:02 #1
Hvor langt er du i din debug?
Har du tjekket om du får data ind med $_POST['email']?
Har du tjekket om MySQLen retunere nogle fejl der hvor du henter oplysninger fra DBen?
Og har du tjekket om den kører igennem if sætningen men blot springer header()'eren over?
Avatar billede Pkallesoe Nybegynder
05. marts 2012 - 06:19 #2
Gør email uniqe i mysql...
og igen.. som nævnt før... brug ikke * hvis du kun skal bruge mindre end alle informationer ;-)
Avatar billede tobrukDk Novice
05. marts 2012 - 07:45 #3
#1

Skal jeg bare kopie min sql over ??  Og se om der kommer nogle fejl ??

Hvad mener du med de 2 første ??

Hvordan gør jeg det ??

#2 hvad mener du helt jeg forståe ikke helt hvad du mener ?
Avatar billede Slettet bruger
05. marts 2012 - 08:02 #4
Det @Pkaellesoe mener er at hvis du sætter email-kolonne i tabellen til unik (unique), så tillader databasen kun at der findes unikke email adresser.
Og så vil det være en god idé at vende sig fra at bruge "SELECT * FROM table" og istedet specificerer hvilke kolonner du vil hente data ud fra, medmindre du skulle bruge samtlige kolonner fra den angivne tabel. Eksempel: "SELECT id, title, content FROM table".
Avatar billede tobrukDk Novice
05. marts 2012 - 08:16 #5
Ja okay . ;) jeg sende lige min database information senere ;) hvis det er sådan lige nu kan jeg ikke da jeg er på mobil ;)
Avatar billede kjeldsted Novice
05. marts 2012 - 09:14 #6
#3 Nej.
Lav din debug i PHP. For at du ved om fejlen ligger i databasen eller i PHP skal du sikre dig at de data du forventer at databasen modtager rent faktisk også er de data den modtager. Hvis vi nu antager at der et eller andet sted sker en fejl med $_POST['email'] så den fx. er tom, vil databasen jo godkende. Så start med at tjekke om indholdet at $_POST['email'] er det samme som du forventer.

Og så vil det da ikke være dumt at sætte email'en til unik i MySQL. Men dog bør du da nok også få det andet til at virke så du kan give brugeren besked om hvorfor han ikke er blevet oprettet.
Avatar billede tobrukDk Novice
05. marts 2012 - 09:32 #7
#6 forstår ikke lige hvad du mener med det ?? .. undskyld men har lidt svært ved at forstår sådan noget her. Men det ville måske hjælpe lidt hvis du hsr nogle f.eks ;)
Avatar billede Pkallesoe Nybegynder
05. marts 2012 - 09:49 #8
#7 hvilket præcist forstår du ikke? :o)

Men ud over dette. Prøv at læs om PDO eller prepared statements.
Dette kan hjælpe din code til at blive bedre og mere sikker :o)
Avatar billede kjeldsted Novice
05. marts 2012 - 21:07 #9
#7
Det er det grundlæggende i al programmering at man debugger. Tvivler på at nogle er erfarne nok til ikke at debugge ;o

Hvis du vil kende indholdet af en variabel skal du udskrive den :o
Hvis du vil vide om en kode i en if sætning bliver eksekveret kan du fx. udskrive noget i if sætningen.

Hvis ikke du begynder på at debugge kode, kommer du aldrig ret langt ;)

Og hvis du skal have eksempler.
Skal du være sikker på hvad en variabel indeholder kan du fx. skrive:
echo $var;

eller

die($var);

Eller lignende. Hvis di vil vide om du eksekvere en kode i en if sætning kan du fx.:

if($var==1) {
echo '$var ser ud til at være lig 1';
}


Og disse koder er naturligvis kun til debug. Det skal naturligvis fjernes efter debug.
Avatar billede tobrukDk Novice
05. marts 2012 - 22:49 #10
ååhh altså ord sagde mig intet men jeg kan godt if og else , jeg er i gang med uddannelse til at kunne lave hjemmeside :)
Avatar billede tobrukDk Novice
05. marts 2012 - 22:50 #11

CREATE TABLE IF NOT EXISTS `brugere` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `email` varchar(255) DEFAULT NULL,
  `password` varchar(255) NOT NULL,
  `facebook` varchar(255) NOT NULL,
  `land` varchar(255) NOT NULL,
  `profiltekst` text NOT NULL,
  `djnavn` varchar(255) DEFAULT NULL,
  `site` varchar(255) NOT NULL,
  `fk_musik_info` int(11) NOT NULL,
  `profilbillede` varchar(255) NOT NULL,
  `soundcloud` varchar(255) NOT NULL,
  `club` varchar(255) NOT NULL,
  `booking` varchar(255) NOT NULL,
  `pris` int(11) NOT NULL,
  `hemmeligheder` varchar(255) NOT NULL,
  `admin` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
Avatar billede tobrukDk Novice
05. marts 2012 - 22:54 #12
#8 hvad skal jeg sådan mere kig efter PDO ?
Avatar billede kjeldsted Novice
05. marts 2012 - 23:14 #13
"jeg er i gang med uddannelse til at kunne lave hjemmeside"

I så fald har du ikke andet valg end at lære at debugge din egen kode ;o

Nogle simple forholdsregler er at når man debugger kigger man som regel på hvorfor man får et andet resultat end forventet. Hvis man har lavet en funktion der giver et forkert resultat, starter man med at se hvad man putter ind i funktionen. Hvis ikke man ved det ved man heller ikke funktionen fejler noget. Og når man sidder med 300 linjers PHP hvor der er fejlmuligheder på 200 af dem, kan man enten spørge på Eksperten hver gang, eller debugge sin kode ;) Og misforstå mig nu ikke. Alle kan løbe ind i problemer som man ikke selv kan løse og skal have hjælp til. Men almindelig debug er bare mindst ligeså vigtig som at kende til grund funktionerne.

Meget debug går ud på at ét stykke data bliver til noget uventet. Og hvis man er på bare bund med hvor det går galt skal man tage koden stykke for stykke og hver gang dette stykke data bliver behandlet (eller brugt) se om der sker det som der burde. I din kode kunne det jo teoretisk set ske at den faktisk læser if statementet korrekt og eksekvere koden, men at den ikke udfører header() funktionen, af en eller anden grund. Jeg kan ikke fortælle dig om dette sker. Kun din server kan. Derfor skal du blive gode venner med debug og din server. Og den eneste måde at fide ud af om den faktisk når til dit header() script er at udskifte header() med noget andet som du lettere selv kan aflæse. Sm fx. En die() med en debug tekst.
Avatar billede tobrukDk Novice
06. marts 2012 - 06:17 #14
Okay ;) så du ville gerne have at jeg gøre sådan her ??

[Div]
If($email ==""){
  Echo "der er fejl";
}
[/div]
Avatar billede kjeldsted Novice
06. marts 2012 - 07:34 #15
Jeg ville nok nærmere foretrække at du gjorde det dér hvor du også selv har skrevet du tror fejlen er ;)


        if(mysql_num_rows($bruger) > 0){
            die('Emailen findes allerede');
            header("Location: fejl_email.php");
            $errorCount++;
        }
Avatar billede tobrukDk Novice
06. marts 2012 - 11:37 #16

$email = mysql_real_escape_string($_POST["email"]);
        $s = "SELECT email FROM brugere WHERE email = '". $email ."'";
        $q = mysql_query($s) or die(mysql_error());

        if(mysql_num_rows($q) > 0){
            echo 'Email adressen er optaget!';
            $errorCount++;
        }else{
            echo 'Din bruger er blevet oprettet i systemet.';
            $errorCount++;
        }


jeg lavet om på den og komme frem det til det her :)
Avatar billede tobrukDk Novice
06. marts 2012 - 11:38 #17
#kjeldsted & mig skal vi del point?

grund til at jeg valg at del det er pga at du har lærer mig lidt mig og jeg har samme tid komme frem til noget godt osv.. :) hvis du kan forstår mig :D
Avatar billede kjeldsted Novice
06. marts 2012 - 14:49 #18
Du tager bare de points selv :)
Avatar billede tobrukDk Novice
06. marts 2012 - 16:27 #19
Håber det er okay med dig :) men tak fordi lærer mig noget nyt :)
Avatar billede kjeldsted Novice
06. marts 2012 - 16:49 #20
Hvis ikke det var i orden med mig havde jeg ikke skrevet det til dig. Dét kan jeg godt garantere! ;)
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