Posts by Darsstar

    Citaat van Shahiem

    Ik krijg nu bijna overal op me site die melding


    Dat komt omdat crime games bagger gescript zijn...



    Aangezien je de volledige meldingen voor jezelf hebt gehouden (met regel nummers) kun je zelf opzoek gaan naar zulke gevallen en de juiste checks inbouwen...

    Sorry, ik ben niet helemaal bij de les...
    reageerde op de reactie van db-maffia...


    Wat geeft "echo mysql_error();" ? (na regel 68 zetten in je config)
    Wat die parse error betreft...
    Op regel 7 wordt geen { verwacht, probeer eens te bedenken wat wel...

    Bestaat de tabel `[cron]` wel?


    "svenneke_sven.[users]"


    gebruik backtics (`) als je tabel/column namen hebt met vreemde tekens (of bijvoorbeeld een spatie), [ en ] zijn zulke vreemde tekens...

    PHP
    if ($_POST["username"] && $_POST["password"])  
    {   // password coderen
        $passgecodeerd = md5($_POST["password"]);
        $username = $_POST["username"];
    ...


    Er zijn dus twee voorwaarden waar aan voldaan moet worden om de variabelen $passgecodeerd (gehashed is een betere naam) en $username aan te maken...
    Word er niet aan die voorwaarden voldaan, dan zullen die variabelen niet bestaan en krijg je dus notices wanneer je ze toch probeert te gebruiken... (regel 30)


    Oplossing?
    Zorg dat alles wat onder bepaalde voorwaarden gebeurt ook echt binnen de if (om een voorbeeld te noemen) staan die op die voorwaarde controleert.


    Zodra je dat hebt gedaan kom je vragen om verbetering begrepen? (die while weghalen bijvoorbeeld)

    Geef mij maar een for loop:

    Ok, sorry, jij en NielsB kregen de afgelopen week ongeveer het zelfde idee...
    Hij gebruikt wel mysqli...
    Ik heb delen van jullie classes door elkaar gehaald...


    PHP
    public function quote($value)
    {
        return mysql_real_escape_string($value, self::$conn);
    }


    Dat lijkt me nog steeds een goed idee...


    Over dat van die oneindige loop ben ik ook niet meer zeker, NielsB had ook zo iets, maar anders wat wel een oneindige loop veroorzaakte...


    Ik vraag me af of er zoiets als een resource scope is...


    *gaat verder denken over de oorzaak van dit probleem*

    MySQL en MySQLi door elkaar gebruiken... foei!


    PHP
    public function quote($value)
    {
        return self::$con->real_escape_string($value);
    }


    brengt zoiets je op een idee?


    PS. de volgende regel zal een oneindige loop creëren:

    PHP
    while($result = $db->fetch_object($sql)) {

    Addslashes()/mysql_real_escape_string() gebruik je alleen voor waardes die een database (of iets vergelijkbaars) in gaan.


    Gebruik htmlspecialchars() als je iets op het scherm wilt weergeven.


    Verder kun je dingen type-casten, en dat is de basis wel zo'n beetje...

    Inderdaad...
    Ik had liever dat iemand (Koen) dat ene script had gewijzigd dan dat mijn id veranderd moest worden om van die leuke errors af te komen nadat de database gegevens gewijzigd waren...


    Volgens mij is NO ACTION de standaard actie (bij mysql), en kan je dus referenties aanmaken zonder acties.
    Ook kan je constraints wel via phpmyadmin aanmaken, al is het minder fijn.

    $this->connect() wordt alleen uitgevoerd als self::$conn een of andere vorm van false is (of NULL).
    Ook zit er in MySQL::connect() nog een check...

    connect() is nu protected en kan alleen binnen de class (of een van zijn children) aangeroepen worden...
    Je hoeft het ook niet meer zelf aan te roepen...

    zie je het "static" voor $_connection?


    Dat zorgt er voor dat die waarde statisch is waardoor het niet per instantie van dat object verschillend kan zijn...
    db::$_connection zou ook kunnen, maar self is de statische versie van $this.