Avatar billede tras Juniormester
16. november 2006 - 11:40 Der er 8 kommentarer og
1 løsning

Call funktion query() laver en error hvordan ratter jeg den?

Nogle som kan hjælpe mig med min fejl. Kan ikke finde ud af hvad jeg skal gøre for at ratte den.

Fejl kode:: Fatal error: Call to a member function query() on a non-object in insert.php on line 19



<?php
include("..//func.php");
DB::Conn("open");

if (isset($_POST['submit'])) { // if form has been submitted

    if (!$_POST['username'] | !$_POST['password'] | !$_POST['password_validation'] | !$_POST['email']) {
        die('You did not fill in a required field.');
    }

    // check if username exists in database.

    if (!get_magic_quotes_gpc()) {
        $_POST['username'] = addslashes($_POST['username']);
    }

    $name_check = $db_object->query("SELECT username FROM webhosteu_users WHERE username = '".$_POST['username']."'");

    if (DB::isError($name_check)) {
        die($name_check->getMessage());
    }

    $name_checkk = $name_check->numRows();

    if ($name_checkk != 0) {
        die('Sorry, the username: <strong>'.$_POST['username'].'</strong> is already taken, please pick another one.');
    }

    // check passwords match

    if ($_POST['password'] != $_POST['password_validation']) {
        die('Passwords did not match.');
    }

    // check e-mail format

    if (!preg_match("/.*@.*..*/", $_POST['email']) | preg_match("/(<|>)/", $_POST['email'])) {
        die('Invalid e-mail address.');
    }

    // no HTML tags in username, website, location, password

    $_POST['username'] = strip_tags($_POST['username']);
    $_POST['password'] = strip_tags($_POST['password']);

    // now we can add them to the database.
    // encrypt password

    $_POST['password'] = md5($_POST['password']);

    if (!get_magic_quotes_gpc()) {
        $_POST['password'] = addslashes($_POST['password']);
        $_POST['email'] = addslashes($_POST['email']);
    }



    $regdate = date('d m, Y');

    $insert = "INSERT INTO webhosteu_users (
            username,
            password,
            regdate,
            email)
            VALUES (
            '".$_POST['username']."',
            '".$_POST['password']."',
            '$regdate',
            '".$_POST['email']."'
            )";

    $add_member = $db_object->query($insert);

    if (DB::isError($add_member)) {
        die($add_member->getMessage());
    }

    $db_object->disconnect();
?>


<h1>Registered</h1>

<p>Thank you, your information has been added to the database, you may now <a href="login.php" title="Login">log in</a>.</p>

<?php
}?>
Avatar billede sw_red_6 Nybegynder
16. november 2006 - 11:51 #1
har du husket at oprette "$db_object" ?
Avatar billede tras Juniormester
16. november 2006 - 12:02 #2
Det er vist mig der fuckker op i det her. bruger jo ikke db:pearl mere men mysql sp det er en lidt anden connection jeg skal bruge :S
Avatar billede tras Juniormester
16. november 2006 - 12:06 #3
Så der er problemet :)
Avatar billede tras Juniormester
16. november 2006 - 12:07 #4
nu er problemet bare at jeg ikke kan komme på hvordan jeg laver en username tjek med databasen?

    // check if username exists in database.
   
    $SQL = "SELECT username FROM webhosteu_users WHERE username = '".$_POST['username']."'";

    if ($SQL != 0) {
        die('Sorry, the username: <strong>'.$_POST['username'].'</strong> is already taken, please pick another one.');
    }
Avatar billede tras Juniormester
16. november 2006 - 12:14 #5
<?php
include("..//func.php");
DB::Conn("open");

if (isset($_POST['submit'])) { // if form has been submitted

    if (!$_POST['username'] | !$_POST['password'] | !$_POST['password_validation'] | !$_POST['email']) {
        die('You did not fill in a required field.');
    }

    // check if username exists in database.
   
    //$SQL = "SELECT username FROM webhosteu_users WHERE username = '".$_POST['username']."'";

    //if ($name_check != 0) {
    //    die('Sorry, the username: <strong>'.$_POST['username'].'</strong> is already taken, please pick another one.');
    //}

    // check passwords match

    if ($_POST['password'] != $_POST['password_validation']) {
        die('Passwords did not match.');
    }

    // check e-mail format

    if (!preg_match("/.*@.*..*/", $_POST['email']) | preg_match("/(<|>)/", $_POST['email'])) {
        die('Invalid e-mail address.');
    }

    // no HTML tags in username, website, location, password

    $_POST['username'] = strip_tags($_POST['username']);
    $_POST['password'] = strip_tags($_POST['password']);

    // now we can add them to the database.
    // encrypt password

    $_POST['password'] = md5($_POST['password']);

    $regdate = date('d m, Y');
   
            mysql_query("INSERT INTO webhosteu_users (
            username,
            password,
            regdate,
            email
            ) VALUES (
            '".$_POST['username']."',
            '".$_POST['password']."',
            '$regdate',
            '".$_POST['email']."'
            )");
?>


<h1>Registered</h1>

<p>Thank you, your information has been added to the database, you may now <a href="login.php" title="Login">log in</a>.</p>

<?php
}?>

Her er koden som virker! men hvordan laver jeg en username tjek?!
Avatar billede tras Juniormester
16. november 2006 - 12:47 #6
Closed
Avatar billede sw_red_6 Nybegynder
16. november 2006 - 13:33 #7
du kunne prøve det her:
// check if username exists in database.
 
    $SQL = "SELECT username FROM webhosteu_users WHERE username = '".striptags($_POST['username'])."'";
    $result = mysql_query($SQL);
    $name_check = mysql_num_rows($result);
    if ($name_check != 0) {
        die('Sorry, the username: <strong>'.$_POST['username'].'</strong> is already taken, please pick another one.');
    }

er dog ikke sikker på det vil virke med den striptags() sat på der..
Avatar billede tras Juniormester
16. november 2006 - 13:40 #8
Nej striptags virker ikk. har ikke den funktion men trim kan brues?

Men ellers virker det fint tak / du ved selv hvilken side du kan få points på ;)
Avatar billede tras Juniormester
16. november 2006 - 13:43 #9
Her er final kode som virker.

    // check if username exists in database.
    $SQL = "SELECT username FROM webhosteu_users WHERE username = '".$_POST['username']."'";
  $result = mysql_query($SQL);
  $name_check = mysql_num_rows($result);
  if ($name_check != 0) {
        Java::Alert("Det Brugernavn '".$_POST['username']."' er i brug, vælg venligst et andet. ");
        Java::GoToURL("index.php?page=form_opret");
      die;
  }

Tak sw_red_6
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