Posts by NielsB


    Hallo,


    Magic qupotes en mysql_real_escape_string zijn over het algemeen niet veilig genoeg heb ik geleerd ;)
    Binnenkort een post hierover.


    Mvg,
    Tim


    Hallo Tim,


    Dat is een tijd geleden! Zeker een jaar en 2 maanden voor mij. ;)


    Het klopt ook wat je hier zeg dat het niet veilig genoeg is. Zelf ben ik niet zo van de checks om van te voren de gets en posts en cookies te beveiligen. Ik beveilig liever mijn sql statements wanneer ik iets ophaal of erin zet daarvoor natuurlijk alle mogelijke situaties in de if statements. Wat natuurlijk ook handiger en veiliger is het toepassen van prepare statements.


    Ik ben benieuwd naar je artikel en je bevindingen.


    Mvg,
    Niels

    Je post disabletut klopt niet. Je kijkt of je $data->disabletut 0 is en geef dan een value = 1. Deze 1 zorgt er dus voor dat hij uit staat. Oké dit moet kloppen als je sql code goed staat. Wat jouw probleem is dat je in je ELSE statement ook een value = 1 mee geeft verander dit naar 0 en dan zal het moeten werken.


    Dus je code zou zo moeten werken:


    En anders snap ik je doel niet, dat je twee keer een uitzet optie maakt.


    Daarbij geef je een int5 aan je disabletut, als je hier tinyint 1 van maak is het al voldoende voor een simpele 1 en 0. ;) Het kan allemaal nog makkelijker, maar ik hou het zelf altijd op tinyint. Een boolean voor true en false kan ook nog etc..


    Nog een tip:
    Post een formulier en ga dan kijken of je checkbox gezet is ja of nee. Want nu kijk je alleen of de disabletut is gezet en dan gelijk een sql statement naar de database. Als het niet is gezet ook weer een statement naar de database. Wat extra security mag wel. ;)
    Wat ik zelf ook meestal doe is gewoon een simpele check bij het posten van het formulier.


    PHP
    <?php
    $disabletut = ( isset($_POST['disabletut']) && $_POST['disabletut'] == 1 ) ? true : false;
    if( !mysql_query( "UPDATE user SET disabletut = '". (int) $disabletut ."' WHERE username = '".mysql_real_escape_string($data->login)."'") ) {
    echo 'mislukt';
    }
    else{
    echo 'Je hebt de status van disabletut aangepast naar: '. $disabletut;
    }
    ?>

    jopitan, zijn / haar script was al veilig door in de connect.php te kijken of er magic_quotes zijn ja / nee. Hier wordt ook gelijk alle $_GETs, $_POSTs, etc. opgevangen en gaat er een mysql_real_escape_string om deze GLOBAL variabelen heen. Als de server magic_quotes aan heeft staan gaat er eerst stripslashes overheen.
    Voor de veiligheid is het natuurlijk wel slimmer om te escapeën en daarbij een hash over password is het veiliger! Nog slimmer is het gebruik van pdo of mysqli i.c.m. de database.


    @topicstarter, jouw probleem kan als nog bestaan. Heb je een admin map en daarin nog een connect.php staan? Dan heb je kans dat je daar ook even je database gegevens in moet aanpasen.

    [offtopic]Van een tijd geleden, weer is een keer terug gekomen om hier op te reageren[/offtopic]


    Een tip voor de volgende keer, je preg_replace (Perform a regular expression search and replace) die zorgt er voor dat hij alle tekens behalve je a t/m z en A t/m Z vermijdt en verwijdert uit je string. Wat jij dus eigenlijk nodig had was het zoeken en het vervangen van speciale tekens. Hiervoor gebruik je dus de str_replace ( Replace all occurrences of the search string with the replacement string )


    Dus voor mensen die nog meer problemen hebben of dit netjes willen doen. Gebruik een str_replace voor het zoeken van speciale tekens en vervang deze!! Zelf heb ik altijd problemen gehad met iconv en al dat soort functions.

    Ik vind jammer dat jullie op heel de website eigenlijk een soort van aankondiging plaatsen waardoor er veel offtopic wordt gepraat.. Ik hoop dat dit in de nieuwe versie verbeterd gaat worden. Er wordt tegenwoordig 5 keer hetzelfde antwoord gegeven zoals google i.p.v. mensen met kennis te laten reageren. Ik erger me eigenlijk best wel rot aan de mensen die soms zo onnodig kunnen antwoorden op een topic.


    Verder ziet het eerste screenshot er netjes uit, maar over het tweede ben ik het niet eens. Hoe de avatar wordt weergeven met een witte kader omheen oogt niet netjes.


    Overigens Koen vind ik de teller en alles beetje onprofessioneel. Het had leuker geweest als je alles geheim op de website liet of alleen een datum, dat er iets gaat gebeuren, maar wat er gaat gebeuren zullen ze maar moeten over gaan discussiëren. ;)


    Succes met jullie nieuwe website / forum.

    head of development
    head developer


    Ontwikkel je nou wel of niet? Dus eigenlijk ben je van de service, daar valt bug oplossingen etc ook onder.


    Head development & service team?

    Ik vind je visite kaartje er netjes uit zien behalve je titel. Ik denk dat je daarvan iets met groot scripting moet doen? Van wie is het bedrijf, want het volgende stukje vind ik wel heel erg jammer.


    Citaat

    Rapifia Europe is de marktleider in internet oplossingen, van hosting tot programmeren.


    Klopt natuurlijk niet!

    Graag je structuur van je users tabel en je nieuwe code laten zien, ik heb al vermoede waar je nu de fout in gaat!

    Citaat van Reza

    NielsB,


    Het probleem ligt hem aan dat er in de SQL stukken zitten die niet nodig of niet compleet zijn.


    Eigenlijk dus wel makkelijk op te lossen.. Zolang je gewoon je sql test en gewoon kijkt wat er mis gaat en hierop bepaalde gegevens aan te passen!

    regel 221 van je code die je geeft staat:

    PHP
    <td class="lightTxt2">'.usernaam($lid->id,1,1).'</td>


    Die usernaam($lid->id, 1,1 ) kan je replacen met $lid->login of $lid->username ligt eraan hoe het in de database staat..


    En daarbij komt dit op regel 106 ook voor.


    Dit is gebaseerd op de regels nummer van de code die je geeft op de site kan natuurlijk anders zijn dan jouw php bestand.

    Kwestie van je values van een bepaalde tabel aanpassen.. Dus je moet gewoon even kijken welke tabel het is dus misschien 1 voor 1 toevoegen met de inserts eronder.


    Is dit overigens met plaatsing van de sql in de database of wanneer komt dit voor?

    Ik kom zometeen even met een update ! ;)


    Edit:
    Hieronder een verbeterde versie van Patrick. Hij leest nu alle posities per user uit.


    En hieronder per user:


    Wil je dat ik die level ook nog erbij doe of kan je dit zelf?


    Edit:
    Wanneer je naast kracht ook op level sorteert dan kan je positie bepalen wanneer de kracht gelijk staat.



    En dit is per user:

    Oke is je level een int met 1 2 3 4 5 nummering of hoe zit deze in elkaar?


    Je kan deze gewoon in je WHERE erbij te doen. ;)

    Je moet gewoon meest gebruikte resolutie aanhouden of meerdere formaten hanteren. Laatste is overigens wel handig wordt bij android ook gebruikt.


    Daarnaast zal je bij optie 1 moeten kijken wat voor achtergrond kleur mooi in de achtergrond overloopt. ;)

    Ik zal het op een andere manier doen, bepaal alle posities van de gebruikers en selecteer dan de positie van de huidige gebruiker.


    PHP
    SELECT u.id,
           (SELECT COUNT(*)
              FROM users
             WHERE users.kracht >= u.kracht) AS position,
           u.kracht
      FROM users u
     WHERE u.id = '7'


    Dit stukje zorgt ervoor dat hij alle posities per user bepaald en daarna de specifieke user bepaald. En het zal je een unieke positie geven ook wanneer ze gelijk staan.


    Wanneer jouw id hoger is dan een ander en je kracht staat gelijk dan zal hij jou erboven zetten, dit is natuurlijk oneerlijk dus zal je hier nog is naar moeten kijken. Dit is altijd handig om te bepalen met geld etc erbij. ( Hierbij denk ik gelijk terug naar de tijd van crimeclub, goeie ouwe tijd! )