fout

Door Corn , 20 jaar geleden, 3.930x bekeken

fout gepost

Gesponsorde koppelingen

PHP script bestanden

  1. fout

 

Er zijn 14 reacties op 'Fout'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Wouter De Schuyter
Wouter De Schuyter
20 jaar geleden
 
0 +1 -0 -1
Ziet er goed uit op het eerste zicht..
Zal ik mn neefje aanraden :p die zocht zo iets en ik was te lui om te make :p..
Corn
Corn
20 jaar geleden
 
0 +1 -0 -1
Oke :p suc6
Klaasjan Boven
Klaasjan Boven
20 jaar geleden
 
0 +1 -0 -1
Redelijk netjes gescript. Checken of er gepost is doe je overigens met $_SERVER['REQUEST_METHOD'] en niet zoals jij if($_POST['submit'])
PHP Newbie
PHP Newbie
20 jaar geleden
 
0 +1 -0 -1
Je datamodel is verkeerd. Antwoorden sla niet komma-gescheiden op...
Arian Stolwijk
Arian Stolwijk
20 jaar geleden
 
0 +1 -0 -1
Ziet er redelijk uit, ik heb het niet helemaal uitegpluist, maar er viel me wel het e.e.a. op.

Namelijk:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
// ...
        function showAdmin()
        {

            $admin .= "<form method=\"POST\" ation=\"" . $_SERVER['PHP_SELF'] . "\">";
            // ...
        }
// ...
?>

Hier doe je gelijk al '.=', maar dat kan nog niet, omdat in $admin nog niks staat. Als je error_reporting op E_ALL hebt staan, zal je dat wel merken ;).

Verder zag ik nog dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
// ..
            # Set some vars

            $a = $_POST['a'];
            $total = count(explode(",", $a));
            $q = htmlentities($_POST['q']);
            $a = $_POST['a'];
            # calc null values
// ..

?>


Dat je 2 keer $a met $_POST['a']; vult is een beetje doelloos, omdat je die $a maar één keer gebruikt voor die $total, je kan net zo goed gewoon gelijk
$total = count(explode(',',$_POST['a']));
doen.
Voor wat jij probeert te doen, met count en explode, heb je ook substr_count() voor.

Voor de rest ziet het er wel oke uit. Misschien kan je voor die database class gewoon gelijk PDO of Mysqli gebruiken. Hoef je zelf niet zo'n class te schrijven;)
Han eev
Han eev
20 jaar geleden
 
0 +1 -0 -1
Wat mij opviel zo snel, in je database class.
Achter elke Query die je doet doe je dit:
mysql_close();
Dat is helemaal niet nodig, omdat je de connectie nog vaker gebruikt.
Ook de fout afhandeling in je database class is niet goed, als er nu iets fout gaat kan jou script daar niets mee.
Gerben Jacobs
Gerben Jacobs
20 jaar geleden
 
0 +1 -0 -1
Beetje XSS gevoelig als ik zo je voorbeeld URL bekijk..
Hipska BE
Hipska BE
20 jaar geleden
 
0 +1 -0 -1
Enkele dingen die niet zouden mogen voorkomen in een poll systeem..

Warning: Division by zero in /storage/mijndomein/users/090560/public/sites/www.htmlkit.nl/poll/poll.php on line 171

XSS http://www.htmlkit.nl/poll/archives.php?ArchID=14

en poll's met maar 1 keuze? ( http://www.htmlkit.nl/poll/archives.php?ArchID=9 )
Corn
Corn
20 jaar geleden
 
0 +1 -0 -1
dat hebben van die mensen gedaan die denken dat ze grappig zijn om met de admin te gaan rotzooien...
Lasse
Lasse
20 jaar geleden
 
0 +1 -0 -1
Het werkt, alhoewel er code-inhoudelijk nog wel wat dingen te verbeteren/beveiligen zijn, goed.

Het eerste wat mij echter opvalt bij het snel doorlezen van je code zijn je classes. Over het algemeen bestaan er 2 soorten classes: Dataklasses, die gewoon data over (in dit geval) de poll in zich hebben, die je kunt aanpassen. Verder heb je ondersteunende classes, die of informatie over dataklasses in zich hebben staan, of andere services representeren (zoals bv. jouw databse class). Je kunt discussieren over controll-classes. Naar mijn mening kun je dat net zo goed procedureel opschrijven, maar vaak gebeurt dit ook in een classe.

Wat jij echter lijkt te doen is classes maken die die soorten combineren. Jij voegt hard-coded HTML-code toe in een class die een oude poll moet selecteren, en de poll class doet ook aan hard-coded HTML, terwijl hij dat eigenlijk aan een andere class/procedurele-code moet overlaten.
Je database class is (zoals al gezegd) gewoon een (slechte) wrapper tussen de mysql-extensie, waar je veel beter pdo of msqli voor kunt gebruiken. Ook slecht aan je databse class is dat je voor iedere query een nieuwe verbinding aanmaakt, wat het geheel erg langzaam maakt.

Je intall-class is eigenlijk nog erger: Deze representeert letterlijk hard-coded data, en daar is dus het abstractie-niveau volledig verdwenen.

Conclusie is dus dat je wel classes hebt, maar dat je geen OO (objectgeorienteerd) hebt, en dan kun je je classes eigenlijk ook wel weggooien. Ik denk echter dat je dit met een iets beter model, en het verwijderen van je hard-coded HTML al wel een stuk beter kunt maken. Zoals je het nu hebt is het in ieder geval geen hopeloos begin. Het moet alleen nog wel een beetje aangepast om echt bruikbaar te kunnen maken.
Jelle -
Jelle -
20 jaar geleden
 
0 +1 -0 -1
Ik heb een dejavu gevoel bij het zien van dit script

Deze heb je niet zelf gemaakt he?
MiaMore
MiaMore
20 jaar geleden
 
0 +1 -0 -1
Volgens mij heeft hij hem inderdaad niet zelfgemaakt, maar omdat hij leek te werken van een andere site afgeplukt ofzo :P
ReZon
ReZon
20 jaar geleden
 
0 +1 -0 -1
Lijkkt verdraaid veel op de poll van Sander Geerts uit 2004
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
EW
EW
19 jaar geleden
 
0 +1 -0 -1
Er is maar een goede poll en dat is :http://trainerew.nl/?id=motm

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. fout

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.