Posts by Darsstar

    PHP
    $connection_database1 = mysql_connect($host, $userdb, $passdb) or die(mysql_error());
    $connection_database2 = mysql_connect($host, $userdb, $passdb) or die(mysql_error());
    
    
    mysql_select_db($database1, $connection_database1) or die(mysql_error()); 
    mysql_select_db($database2, $connection_database2) or die(mysql_error());
    
    
    mysql_query($sql, $connection_database1); 
    mysql_query($sql, $connection_database2);


    Dat is al ietsjes netter. Betere error handling is aan te raden, maar het gaat om het idee.


    Standaard wordt de laatst geopende connectie gebruikt.

    PHP
    $link1 = mysql_connect(...);
    $link2 = mysql_connect(...);
    
    
    mysql_query("queryA", $link1);
    mysql_query("queryA", $link2);

    Er bestaan verschillende ereg() functies eregi() is bijvoorbeeld niet hoofdletter gevoellig. Maar bij preg_match() moet je dat op een andere manier aangeven: aan het einde van de string. Maar dan zou het moeilijk te bepalen zijn wat hij de regex hoort en wat een modifier is.


    Daarom moet je het begin en eind van de regex aangeven met tekens naar eigen keus. De slash wordt het meest gebruikt. Het eerste teken in de string moet dus ook gebruikt worden om het einde van de regex aan te geven, in jouw geval is dat ^. Maar aangezien het dakje een speciale betekenis heeft (het matched het begin van een string) wil je waarschijnlijk iets anders gebruiken.


    PHP
    preg_match('/^([a-zA-Z0-9]{4})-([a-zA-Z0-9]{4})-([a-zA-Z0-9]{4})-([a-zA-Z0-9]{4})/', ...)

    is dus wat je wilt. De slash zou je ook kunnen vervangen door een hekje, een een tilde, een plus teken of wat je maar wilt.


    Zie http://www.php.net/manual/en/regexp.reference.delimiters.php

    Laten we om te beginnen eens de fout lezen: "Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/marco/public_html/Projecten/login-zelfscript/config.php on line 27." mysql_num_rows() heeft een verkeerde waarde gekregen voor de eerste parameter op regel 27.


    Als we regel 27 er even bij pakken: $count = mysql_num_rows($result); zien we dat het ook nog eens maar een parameter krijgt, namelijk $result. $result is blijkbaar een boolean volgens de foutmelding terwijl mysql_num_rows() een resource verwacht.


    Laten we nu eens zoeken wat $result bevat. Ah, gevonden: $result = mysql_query($sql); mysql_query() retourneert blijkbaar een boolean, laten we eens kijken wat het nog allemaal kan retourneren.


    Op http://nl2.php.net/manual/en/function.mysql-query.php kunnen we lezen dat mysql_query() voor een SELECT/SHOW/DESCRIBE/EXPLAIN query een resource retourneert wanneer de query succesvol is of anders FALSE.


    Ok, is de query die we uit willen voeren een SELECT/SHOW/DESCRIBE/EXPLAIN query? De query die we uit willen voeren is $sql, om laten we $sql er even bij pakken dan maar: $sql="SELECT * FROM $tbl_name WHERE username='$username and password='$password'";


    Ja, $sql is een SELECT query dus mysql_query() retouneerd een resource wanneer de query geen fout bevat, en FALSE (een boolean) wanneer deze wel een fout bevat.


    Nu je dat allemaal zelf hebt gedaan zie je misschien ook wel dat je een ' mist na $username.


    Verder heb ik het volgende te melden:
    - Vervang session_is_registered('username') door isset($_SESSION['username'])
    - zie http://nl2.php.net/manual/en/function.session-destroy.php
    - gebruik <?php in plaats van de kortere maar niet door elke server ondersteunde <?

    Je hebt de gegevens voor de database connectie ingevuld, goed. Maar heb je ook die database gevuld met tabellen? Waarschijnlijk is er wel een bestand met een .sql extensie of naam die "database", "mysql" of "sql" bevat om te importeren. (Via phpmyadmin bijvoorbeeld.)

    Bij je "nieuwe link" rewrite rule moet er volgens jouw code verplicht een slash aan het einde van de url. Als je een vraagteken achter de slash zet wordt de slash optioneel.

    Zelfs htmlentities vervangt die tekens niet. htmlspecialchars, mysql_real_escape_string etc zijn functies om data te sanitizen, als je niet ook nog aan valideren doet ben je verkeerd bezig.
    Valideer de correctheid van de data die je ontvangt. Die query zou niet eens uitgevoerd mogen worden als iemand AND bank = bank + 1000000 invoert.

    mysql_real_escape_string is goed, htmlspecialchars/htmlentities totaal niet! htmlspecialchars/htmlentities gebruik je om tekst die HTML kan bevatten veilig tussen andere HTML te stoppen. mysql_real_escape_string gebruik je om tekst die SQL kan bevatten veilig tussen andere SQL te stoppen.


    Welke je moet gebruiken hangt dus van de situatie af.