7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)
  • Q:
    Bijdrager
    Richardb

    Foutje in php script

    Hallo allemaal,

    Ik heb deze site gevonden via google, en hoop dat iemand mij kan helpen met het volgende probleem.

    Ik heb een script in php, waarbij alles goed gaat behalve waarschijnlijk 1 output.
    Zal hieronder een stuk van het script posten….

    <?
    }
    else
    {
    echo ‘<img border=”0″ src=”producten/WSFILES/’ . $_GET[‘prod’] . ‘.bmp” alt=”‘ . $x . ‘”>&nbsp;&nbsp;<br>’;
    echo “<br>&euro; ” . number_format($q, 2, “,”, “.”) . “<br><br>”;
    ?>
    <form name=”bestelform” action=”?pagina=producten/cart” method=”GET”>
    <input type=”hidden” name=”pagina” value=”producten/cart”>
    <input type=”hidden” name=”q” value=”add”>
    <input type=”hidden” name=”PHPSESSID” value=”<? echo session_id(); ?>”>
    <input type=”hidden” name=”prodID” value=”<? echo $_GET[‘prod’]; ?>”>
    <img src=”https://www.onemorething.nl/wp-content/themes/onemorething/external-image.php?src=producten/wagentje.&ext=bmp&h=6117118c57f6085c8fd1fb9ce04473e3&t=1606436469&#8243; border=”0″>Bestellen<br>
    Aantal:<br>
    <input type=”text” size=”3″ maxlength=”2″ name=”aantal”><br>
    <input type=”submit” value=”Bestellen”>
    </form>
    <script>
    document.bestelform.aantal.focus();
    </script>
    <?
    }
    $file = fopen(“producten/WSFILES/” . $_GET[‘prod’] . “_k”, “r”);
    $q = “”;
    while (!feof($file)){
    $q .= fgets($file, 1024);
    }
    fclose($file);
    echo “<td valign=top><font size=2>” . $q . “<br><br>”;
    $file = fopen(“producten/WSFILES/” . $_GET[‘prod’] . “_g”, “r”);
    $q = “”;
    while (!feof($file)){
    $q .= fgets($file, 1024);
    }
    fclose($file);
    echo $q . “</font></td></tr></table>”;
    }
    include(“producten/footer.inc”);
    ?>

    De output is uiteindelijk nadat het bestelformulier is ingevult hetvolgende:

    ?pagina=producten%2Fcart&q=add&PHPSESSID=**************************&prodID=E4573A64B1&aantal=1

    Maar dit moet zijn:

    ?pagina=producten/cart&q=add&PHPSESSID=*************&prodID=E4573A64B1&aantal=1

    ————
    *
    Die ******* heb ik zelf weggehaalt beetje nutteloos, want er staat al zoveel tekst
    ————-

    kort samen gevat van dit alles:

    zoals het nu is:

    ?pagina=producten%2Fcart

    moet worden:

    ?pagina=producten/cart
    ——————————————————————-

    Hoop dat iemand mij hier kan helpen, ben er al een hele lange tijd mee bezig!
    Groetjes richard

    Inactief
    Anoniem

    urlencode en urldecode
    zie php.net voor uitleg functies

    Bijdrager
    Richardb

    url decode

    Raar dat dat zo moet, hij heeft namelijk wel gewerkt zonder.
    Ik zal eens kijken of het zo wel lukt!

    groetjes

    Ik heb wat zitten kijken, waar moet ik het dan bijzetten???

    ———————————-

    $a = split (‘&’, $querystring);
    $i = 0;
    while ($i < count ($a)) {
    $b = split (‘=’, $a[$i]);
    echo ‘Waarde voor parameter ‘, htmlspecialchars (urldecode ($b[0])),
    ‘ is ‘, htmlspecialchars (urldecode ($b[1])), “<br />”;
    $i++;
    }

    ———————————

    Heb geprobeerd strings te veranderen, maar de output blijft hetzelfde.
    Denk zelf ook niet dat het daaraan ligt, aangezien het zonder heeft gewerkt.
    Dat is het mooie bij php;) een klein dingetje fout en het werkt niet meer.
    Het is zo jammer dat ik geen foutmelding krijg.

    groetjes

    Bijdrager
    Richardb

    :o

    Inactief
    Anoniem

    Bepaalde tekens mogen geen onderdeel uitmaken van een URL. Als deze tekens wel onderdeel uit zouden mogen maken van de URL, zou de URL lastig zijn te interpreteren. Een goed voorbeeld is een spatie. Stel: spaties zouden toegestaan zijn in een URL, hoe weet je dat waar de URL eindigt? Daarom wordt een spatie ‘vertaald’ naar %20. Op deze manier kun je toch spaties in een URL stoppen. (Dit staat verder uitgelegd bij urlencode op php.net; vandaar dat ik daar eerder naar verwees.)

    Ook de slash / is een voorbeeld van zo’n teken. Als je een slash wilt versturen in een URL query (bv. ‘…?pagina=producten/cart’) moet je de waarde eerst coderen middels urlencode, en wordt het dus ‘…?pagina=producten%2Fcart’.

    Stel: je hebt een pagina geopend met bovenstaande URL query. Ik meen dat PHP dat automatisch decode, en dat een extra urldecode dus niet nodig is. Na het openen van de pagina is $_GET[‘pagina’] dus al ‘producten/cart’ en niet ‘produten%2Fcart’. Maar goed… dit kun je gemakkelijk controleren door aan het begin van de pagina de waarde van $_GET[‘pagina’] te echo-en.

    Het stukje code –waarvan je vraagt of je dat er bij moet zetten– lijkt me erg omslachtig. Eerst stop je de URL query in een string, die string ga je vervolgens split-en, en dan ga je het waarde voor waarde doorlopen. Kan veel makkelijker:

    [code:1:05090b3e7f]
    foreach $_GET as $key => $value {
    $_GET[$key] = urldecode($value);
    }
    [/code:1:05090b3e7f]

    Maar nogmaals: ik meen dat dit overbodig is.

    Waarom gebruik je voor je formulier trouwens GET en niet POST als method? Dan heb je sowieso niets met deze materie te maken. Op basis van de informatie die je nu geeft is het lastig te beoordelen waarom je het op deze manier doet.

    Bijdrager
    EdbO

    Je hebt in je <form> de actie “?pagina=****” staan. Dit geeft aan dat je op dezelfde pagina blijft wanneer je op de verzend (in dit geval “Bestellen”) klikt. De actie wordt uitgevoerd en de variabelen worden meegegeven in de url. Je kan ook het volgende hebben: bestel.php?pagina=****

    Daarnaast heb je ook nog eens een hidden met de naam pagina. Dit is niet nodig en kan verwijderd worden OF je laat de hidden staan en bij de actie alleen de pagina die na de actie wordt aangeroepen.

    Succes

    Bijdrager
    Richardb

    bedankt allemaal voor de goede informatie, het is gelukt!!:D :D

    Ik zal dit forum zeker nog vaker bezoeken!

    Groetjes!

7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.