Variabelen in adresbalk coderen/wegschrijven
Ik ben nieuw hier en val maar meteen met de deur in huis. Ik had een vraagje omtrend PHP (joh?) nouja eigenlijk twee. :)
Vraag 1:
Kan ik mijn variabelen welke in mijn adresbalk staan coderen of wegschrijven zodat deze niet handmatig aan te passen zijn? hiermee bedoel ik bijvoorbeeld:
pagina.php?USER=1&PAGINA=3
Wanneer men hier bijvoorbeeld een 4 invuld bij pagina dan kan deze persoon zelf bepalen waar hij/zij uitkomt. Ik had iets gelezen over sessions maar ik dacht dat dat alleen voor loginsystemen en taalkeuzes was. Kunnen jullie mij hier mee helpen?
Vraag 2:
Stel (tis zo, maar stel) ik heb een invulformulier. Hiermee schrijf ik bijvoorbeeld een inleiding voor een vragenformulier in een database. Wanneer ik op de submitknop druk dan moet ik een vraag toevoegen.
Formulieren staan in een aparte tabel(formulierid, titel, inleiding) en vragen staan in een aparte tabel (vraagid, formulierid, vraag1, vraag2 etc etc).
Wanneer ik nu op de submit knop druk, dan komen de inleiding gegevens in de database. De database maakt een auto_increment voor formmulierid aan. Maar nou zou ik na de submit op dezelfde pagina of de nieuwe pagina meteen deze inleiding terug willen zien. Kortom meteen dat id weer weergeven.
Ik weet niet of dit kan, maar hij moet dus als het ware de laatst toegevoegde formulier weer laten zien, waarna ik aan dat id weer de vragen kan hangen door het zojuist aangemaakte id weg te schrijven in de tabel vragen (vraagid, formulierid, vraag1, vraag2 etc etc) onder formulierid.
Kan dit? Submit en meteen je submit bekijken VANUIT de database?
hnnnndus, lekker lange uitleg en vraag op deze warme dag. Ik hoop dat jullie me een beetje snappen, zo niet, sorry :) ik heb waarschijnlijk alles 3 keer uitgelegd :P
Alvast bedankt!
1. Werken met sessie probleem opgelost. Get is niet veilig. Coderen heeft geen nut...
Je kan nooit je adresbalk zover krijgen dat de gebruiker de gegevens niet zelf kan veranderen. Je kan eventueel wel op de pagina's zelf een controle uitvoeren of deze wel correct is aangeroepen.
Je haalt sessies aan en zegt dat deze enkel zijn voor loginsystemen en voor taalkeuzes. Dit is niet zo, een sessie gebruik je om de gegevens in te steken die je zelf wilt. Alleen wordt een sessie bijna enkel voor dat soort zaken gebruikt. Als je wilt, kan je daar altijd je pagina-gegevens insteken en dan bovenaan de pagina eruit halen.
Vraag 2:
Ik versta niet 100% wat je bedoelt, maar via mysql_insert_id() krijg je het ID mee van de laatste query. (Voor meer info, zie de manual).
edit: voor vraag 1 was eris me voor :p
Gewijzigd op 01/01/1970 01:00:00 door snotty
En over vraag 2. Het gaat er om dat je zegmaar iets submit aan een database. De database maakt daar een autoincrement voor aan. En wanneer je dus na het drukken op die knop weer op de pagina uitkomt dan krijg je meteen het resultaat weer te zien. Van de id die de database net heeft ingevuld. Kortom je krijgt een soort resume van de nieuwe gegevens die je net hebt ingevoerd, en kunt dan verder om de overige informatie in te vullen. Zonder eerste terug te moeten naar een database overzicht.
Als je op pagina 1 komt, komt in je sessie bijvoorbeeld '1'. Als je naar pagina 2 gaat, dan zet je pagina '2' in je sessie. Je moet de gegevens dus niet in de adresbalk gaan plaatsen.
Vraag 2:
Je zet in je formulier gewoon;
zodat de pagina zelf wordt aangeroepen. Je verwerkt je gegevens in de database zoals je nu al doet en meteen nadat je dus alles in de database hebt gestoken (na je query), doe je mysql_insert_id(). Eens je dit ID hebt, is het niet moeilijk meer om dan de gegevens opnieuw op te vragen.
//ik hoop dat het wat duidelijk is?
Gewijzigd op 01/01/1970 01:00:00 door snotty
$_SERVER['PHP_SELF']; is niet zonder meer veilig, om naar dezelfde pagina te verwijzen werkt meestal enkel een # ook.
Je kunt bijvoorbeeld ook op een 2de pagina uitkomen. Als daar maar de DB gegevens van het zojuist ingevulde formulier geprint komen te staan. Als dat met PHP_SELF kan dan zal ik dat zeker even uitproberen :)
Zoals ik al zei: mysql_insert_id() is een mooie functie :). Zet het id dan ook in je sessie bijvoorbeeld of zet het id in je adresbalk zodat je gewoon op de volgende pagina SELECT * FROM tbl WHERE id='$id' kan doen. (In $id steek je dan de variabele uit je sessie/je adresbalk).