Dus de query slaagt en het aantal resultaten is niet 1. Hoeveel resultaten zijn er dan wel?quote:Op zaterdag 16 augustus 2014 11:44 schreef Djurres het volgende:
Zo ver was ik ook nog :p
Ja, het ID komt in de database voor, dat is het probleem.
Even korte uitleg, het systeem is voor een X aantal comissies binnen een vereniging. De bedoeling is dat men de notulen hier upload zodat alles openbaar word voor alle commissies binnen de vereniging.quote:Op zaterdag 16 augustus 2014 12:02 schreef Light het volgende:
[..]
Dus de query slaagt en het aantal resultaten is niet 1. Hoeveel resultaten zijn er dan wel?
En weet je zeker dat je met de goede database verbindt, en dat er niet nog een andere database is waar dezelfde tabel in staat zonder het gezochte id?
Klinkt alsof je het niet goed hebt opgelost. 3 aparte tabellen is sowieso niet nodig. Je kunt afdelingen makkelijk scheiden aan de hand van een id.quote:Op zaterdag 16 augustus 2014 12:51 schreef Djurres het volgende:
[..]
Even korte uitleg, het systeem is voor een X aantal comissies binnen een vereniging. De bedoeling is dat men de notulen hier upload zodat alles openbaar word voor alle commissies binnen de vereniging.
Om deze niet door elkaar te halen, heb ik meerdere tables binnen 1 db aangemaakt, voor iedere commissie, een table.
Na gecontroleerd te hebben of dit klopt, klopt dit allemaal. Ik heb namelijk ook een scriptje die de laatste 3 geuploadde notulen laat zien. Heb in iedere afdeling even een apart bestandje geupload, en wat me opvalt is dat als er 1 bestandje in staat, dat ik hem kan downloaden, alleen word er een verkeerde extensie mee gegeven. (zo ziet ie .doc als een .exe bestand oid.) Bij een .txt. of .pdf is er niets aan de hand.
Op het moment dat ik MEERDERE bestanden in de db heb staan kan hij de id's niet meer terug vinden, en krijg ik dus geen download.
Dat. En bestanden opslaan in de database is eigenlijk nooit een goed idee. Bestanden kunnen prima door een file system worden opgeslagen (die is daarvoor), zolang je het maar buiten de webroot doet. Dan hoef je in de db alleen op te slaan wat je als naam hebt gebruikt. De locatie is iets dat gewoon geconfigureerd kan worden en in code hoort.quote:Op zaterdag 16 augustus 2014 16:08 schreef totalvamp het volgende:
[..]
Klinkt alsof je het niet goed hebt opgelost. 3 aparte tabellen is sowieso niet nodig. Je kunt afdelingen makkelijk scheiden aan de hand van een id.
Voorderest lastog te helpen zonder code
En dat is het probleem, ik heb nergens geen ruimte buiten de webroot, dus vandaar in de DB. Nu komen er geen spannende dingen in te staan maar het moet natuurlijk wel veilig blijven,quote:Op zaterdag 16 augustus 2014 17:35 schreef Light het volgende:
[..]
Dat. En bestanden opslaan in de database is eigenlijk nooit een goed idee. Bestanden kunnen prima door een file system worden opgeslagen (die is daarvoor), zolang je het maar buiten de webroot doet. Dan hoef je in de db alleen op te slaan wat je als naam hebt gebruikt. De locatie is iets dat gewoon geconfigureerd kan worden en in code hoort.
Code staat een pagina hiervoorquote:Op zaterdag 16 augustus 2014 16:08 schreef totalvamp het volgende:
[..]
Klinkt alsof je het niet goed hebt opgelost. 3 aparte tabellen is sowieso niet nodig. Je kunt afdelingen makkelijk scheiden aan de hand van een id.
Voorderest lastog te helpen zonder code
zelfs shared-hosting heeft vaak een public_html ( achtige ), met daaronder een mapje waar je domein staat, hier kun je best een mapje in donderen :-)quote:Op zaterdag 16 augustus 2014 17:38 schreef Djurres het volgende:
[..]
En dat is het probleem, ik heb nergens geen ruimte buiten de webroot, dus vandaar in de DB. Nu komen er geen spannende dingen in te staan maar het moet natuurlijk wel veilig blijven,
Code staat een pagina terug
[..]
Code staat een pagina hiervoor
Ah, okay.quote:Op zaterdag 16 augustus 2014 18:48 schreef amvrosios het volgende:
[..]
zelfs shared-hosting heeft vaak een public_html ( achtige ), met daaronder een mapje waar je domein staat, hier kun je best een mapje in donderen :-)
Verder kun je bijvoorbeeld afbeeldingen die toch al publiekelijk beschikbaar moeten zijn natuurlijk gewoon in de public folders kieperen.
let wel, dat je je configuratie bestanden niet zomaar van buiten beschikbaar maakt.
je zou even kunnen kijken naar htaccess, daarmee zou je eventueel ook het probleem van folders op kunnen lossen door ze te 'verbieden' ;-)
quote:Op zondag 17 augustus 2014 11:15 schreef Djurres het volgende:
[..]
Ah, okay.
Maar, kan je me uitleggen waarom je dit beter niet in een database kan zetten? Hack gevoelig?
Ik heb namelijk cookiestealing, xss geprobeerd, en
mysql injection geprobeert op onderandere de get_page?id=4 enzo, heb nergens een leak of gat gevonden..
1 2 3 4 5 6 7 | <?php $query = " SELECT `mime`, `name`, `size`, `data` FROM `filejtc` WHERE `id` = {$id}"; ?> |
Die {} kun je gebruiken om variabelen op te nemen in een string. Voor $id is het op zich niet nodig maar als je bijvoorbeeld $object->id wilt opnemen in een string dan kun je dat doen door er accolades omheen te zetten {$object->id} in de string.quote:Op zondag 17 augustus 2014 11:48 schreef remi1986 het volgende:
[..]
[ code verwijderd ]
Ik denk dat de fout hierin zit. Of doet die query functie iets met die {} rondom de variabele?
En verder wordt het id niet escaped. SQL injectie gevoelig dus.
1 2 3 | <?php $id = intval($_GET['id']); ?> |
je wilt configuratie bestanden simpelweg niet in het public gedeelte hebben staan omdat je maar een keer pech hoeft te hebben en de hele wereld heeft je configuratie in handen.quote:Op zondag 17 augustus 2014 11:15 schreef Djurres het volgende:
[..]
Ah, okay.
Maar, kan je me uitleggen waarom je dit beter niet in een database kan zetten? Hack gevoelig?
Ik heb namelijk cookiestealing, xss geprobeerd, en
mysql injection geprobeert op onderandere de get_page?id=4 enzo, heb nergens een leak of gat gevonden..
Laat je post staan dan, zodat anderen ervan kunnen lerenquote:Op dinsdag 19 augustus 2014 19:47 schreef Djurres het volgende:
laat maar! Heb het helemaal zelf opgelost
Dit is zo hinderlijkquote:Op dinsdag 19 augustus 2014 22:14 schreef Faux. het volgende:
[..]
Laat je post staan dan, zodat anderen ervan kunnen leren
quote:Op dinsdag 19 augustus 2014 19:47 schreef Djurres het volgende:
laat maar! Heb het helemaal zelf opgelost
Kan het ook zijn dat hetzelfde woord meerdere synoniemen kent? Dat "peer" bijvoorbeeld ook iets kan zijn uit een hele andere context en dus niet bij de soorten fruit hoort?quote:Op woensdag 20 augustus 2014 20:01 schreef TwenteFC het volgende:
Ik ben even benieuwd hoe jullie het volgende probleem zouden tackelen.
Het gaat om een zoekfunctie, waarbij synoniemen van bepaalde woorden ook gematched moeten worden.
Voorbeeld;
Een gebruiker zoekt op "appel", alle soorten gerechten waarbij appel in het Naam veld voorkomt moeten getoond worden.
Echter is er een tabel waarin staat dat er de volgende synoniemen zijn voor het woord appel: "banaan" en "peer".
Wanneer een gebruiker dus zoekt op bijv. "peer" moeten ook de resultaten terug komen die een gebruiker zou krijgen wanneer deze op "appel" had gezocht.
Ja, ook dat nog.quote:Op woensdag 20 augustus 2014 22:31 schreef robin007bond het volgende:
[..]
Kan het ook zijn dat hetzelfde woord meerdere synoniemen kent? Dat "peer" bijvoorbeeld ook iets kan zijn uit een hele andere context en dus niet bij de soorten fruit hoort?
Misschien zeg ik iets stoms hoor.quote:
Ik volg je mischien niet helemaal, maar wat ik bedoel; een gebruiker doet een zoekopdracht via een tekstveld, hier vult hij appel in.quote:Op woensdag 20 augustus 2014 23:25 schreef robin007bond het volgende:
[..]
Misschien zeg ik iets stoms hoor.
Maar kan je niet een aparte tabel maken met synoniemen en met allemaal foreign keys van dingen die synoniem van elkaar zijn binnen een bepaalde context?
Dat je dus een row hebt met appel, banaan en peer (als dat synoniemen zouden zijn natuurlijk) en dan met een join legt naar de synoniemen zodra de zoekopdracht wordt gedaan?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <br /> <b>Fatal error</b>: Uncaught exception 'MissingException' with message 'Unable to load 3dlbiyswos7e8zi832k0.' in /<public_html>/control/autoload.php:17 Stack trace: #0 [internal function]: __autoload('3dlbiyswos7e8zi...') #1 /<public_html>/control/edit.php(191): call_user_func(Array) #2 [internal function]: ctrl_Edit->Add(Array) #3 /<public_html>/index.php(73): call_user_func(Array, Array) #4 /<public_html>/index.php(79): Main->Run() #5 {main} Next exception 'MissingException' with message 'Unable to load 3dlbiyswos7e8zi832k0.' in /<public_html>/control/autoload.php:17 Stack trace: #0 /<public_html>/control/edit.php(0): __autoload('3dlbiyswos7e8zi...') #1 [internal function]: ctrl_Edit->Add(Array) #2 /<public_html>/index.php(73): call_user_func(Array, Array) #3 /<public_ht in <b>/<public_html>/control/autoload.php</b> on line <b>17</b><br /> |
1 2 3 4 5 6 7 | <?php foreach ($childclasses as $classbase) { $classname = 'tpl_' . $classbase; $name = call_user_func(array($classname, 'GetName')); <andere dingen> } ?> |
omdat de functie call_user_func eerst de callback mee moet krijgen en als tweede argument de parameter. Nu doe je het andersomquote:Op zondag 24 augustus 2014 14:22 schreef Igen het volgende:
O ja, het gaat dus fout bij het volgende stukje code:
[ code verwijderd ]
Bij die laatste regel regel met "$name = ..." ontstaat dus een aanroep naar __autoload met die schijnbaar totaal willekeurige letters en cijfers als class-naam.
Iemand enig idee waarom?![]()
1 2 3 4 5 6 7 8 9 10 | <?php error_reporting(E_ALL); function increment(&$var) { $var++; } $a = 0; call_user_func('increment', $a); ?> |
Nee hoor, volgens mij wil hij als callback GetName van de betreffende childclass aanroepen. Op zich is het valide code, maar wellicht is GetName niet static.quote:Op zondag 24 augustus 2014 16:12 schreef remi1986 het volgende:
[..]
omdat de functie call_user_func eerst de callback mee moet krijgen en als tweede argument de parameter. Nu doe je het andersom
mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
[ code verwijderd ]
Heb ik inderdaad op dit moment niet als static gedefinieerd. Ga uitproberen of het daaraan ligt.quote:Op zondag 24 augustus 2014 16:24 schreef Monolith het volgende:
[..]
Nee hoor, volgens mij wil hij als callback GetName van de betreffende childclass aanroepen. Op zich is het valide code, maar wellicht is GetName niet static.
Geen probleem. Vraag me alleen wel af wat je probeert te bereiken, want erg logisch ziet het er niet uit.quote:
Heb voor m'n persoonlijke website een simpele CMS gemaakt, als programmeeroefeningetje. De data bestaat uit een boomstructuur van pagina's, subpagina's, koppen, alinea's, plaatjesgalerijen, losse plaatjes, embedded youtube-filmpjes enz. Het stukje code wat ik liet zien, maakt een menuutje waar je kan kiezen uit de geldige soorten inhoud die je op een bepaald punt kan invoegen (een plaatje of filmpje bijv. alleen in een galerij, etc.).quote:Op zondag 24 augustus 2014 17:44 schreef Monolith het volgende:
[..]
Geen probleem. Vraag me alleen wel af wat je probeert te bereiken, want erg logisch ziet het er niet uit.
1 2 3 4 5 6 7 8 9 10 11 | <?php $mod_parent = $this->db->LoadElement($parent_id); $childclasses = $mod_parent->FindPossibleChildClasses($this->options); foreach ($childclasses as $classbase) { $classname = 'tpl_' . $classbase; $name = call_user_func(array($classname, 'GetName')); $screenname = call_user_func(array($classname, 'TypeName')); $output .= '<option value="' . $name . '">' . $screenname . '</option>'; } ?> |
Maar al die classes hebben dus een statig GetName die een bepaalde naam teruggeeft of hoe moet ik het zien?quote:Op zondag 24 augustus 2014 17:52 schreef Igen het volgende:
[..]
Heb voor m'n persoonlijke website een simpele CMS gemaakt, als programmeeroefeningetje. De data bestaat uit een boomstructuur van pagina's, subpagina's, koppen, alinea's, plaatjesgalerijen, losse plaatjes, embedded youtube-filmpjes enz. Het stukje code wat ik liet zien, maakt een menuutje waar je kan kiezen uit de geldige soorten inhoud die je op een bepaald punt kan invoegen (een plaatje of filmpje bijv. alleen in een galerij, etc.).
[ code verwijderd ]
(Ik geloof dat het niet netjes is om HTML direct in de code te genereren, maar dat is weer een ander verhaal)
Ja ik snap hem ook niet echt hoevaak ik er ook naar kijk xDquote:Op zondag 24 augustus 2014 18:18 schreef remi1986 het volgende:
Wat een vage constructies je hier soms ook tegenkomt
Eerst uit de database een rijtje namen halen, en dan vervolgens aan de class vragen van "hee hoe heet jij?"
Ja.quote:Op zondag 24 augustus 2014 18:02 schreef Monolith het volgende:
[..]
Maar al die classes hebben dus een statig GetName die een bepaalde naam teruggeeft of hoe moet ik het zien?
Klopt. Ik wil niet dat de eindgebruiker rechtstreeks in de HTML-code kan zien hoe de klassen intern heten.quote:Op zondag 24 augustus 2014 18:18 schreef remi1986 het volgende:
Wat een vage constructies je hier soms ook tegenkomt
Eerst uit de database een rijtje namen halen, en dan vervolgens aan de class vragen van "hee hoe heet jij?"
Daar heeft de gebruiker niet zo veel aan hoor.quote:Op zondag 24 augustus 2014 18:26 schreef Igen het volgende:
[..]
Ja.
[..]
Klopt. Ik wil niet dat de eindgebruiker rechtstreeks in de HTML-code kan zien hoe de klassen intern heten.
Ik vond het netjes om het zo te abstraheren. Maar misschien heb je gelijk en is het overbodig. Niet dat de code er veel anders van zou worden, op z'n simpelst zou het zoiets worden:quote:Op zondag 24 augustus 2014 18:38 schreef Monolith het volgende:
[..]
Daar heeft de gebruiker niet zo veel aan hoor.
Dit soort bijzondere constructies zijn ook echt schering en inslag in PHP.
1 2 3 4 5 6 7 | <?php foreach ($childclasses as $classname) { $screenname = call_user_func(array($classname, 'TypeName')); $output .= '<option value="' . $classname . '">' . $screenname . '</option>'; } ?> |
De hele manier waarop je data in de database en de code zelf verwoven lijken te zijn.quote:Op zondag 24 augustus 2014 18:49 schreef Igen het volgende:
[..]
Ik vond het netjes om het zo te abstraheren. Maar misschien heb je gelijk en is het overbodig. Niet dat de code er veel anders van zou worden, op z'n simpelst zou het zoiets worden:
[ code verwijderd ]
Gebruikt nog steeds dezelfde constructies. Welke constructie vind je eigenlijk zo "bijzonder"?
Database? Alles wat ik hier heb gepost heeft niks met databases te maken. Ik ga toch zeker niet met een database verbinding maken om te kijken welke classes mijn broncode kent.quote:Op zondag 24 augustus 2014 19:00 schreef Monolith het volgende:
[..]
De hele manier waarop je data in de database en de code zelf verwoven lijken te zijn.
Sla dan dit soort informatie in zijn geheel op in de database.
Is er iets mis met inheritance?quote:Sowieso heb ik het idee dat hier weer een brij aan inheritance ipv composition wordt gebruikt.
het idee van classes is dat je er objecten van maakt. Een getname functie zou dan logischerwijs betekenen dat je de naam van het desbetreffende object krijgt, en niet de naam van de class.quote:Op zondag 24 augustus 2014 18:49 schreef Igen het volgende:
[..]
Ik vond het netjes om het zo te abstraheren. Maar misschien heb je gelijk en is het overbodig. Niet dat de code er veel anders van zou worden, op z'n simpelst zou het zoiets worden:
[ code verwijderd ]
Gebruikt nog steeds dezelfde constructies. Welke constructie vind je eigenlijk zo "bijzonder"?
De naam van de functie is misschien niet zo handig gekozen.quote:Op zondag 24 augustus 2014 19:50 schreef remi1986 het volgende:
[..]
het idee van classes is dat je er objecten van maakt. Een getname functie zou dan logischerwijs betekenen dat je de naam van het desbetreffende object krijgt, en niet de naam van de class.
Ik heb graag dat eigenschappen van een klasse in die klasse zelf staan en niet ergens in een database.quote:Waarom zet je die screenname niet in de database erbij dan? Scheelt je loopen door al die classes en hoef je ook niet in elke class die functie aan te maken.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |