php, bug in Konqueror of doe ik iets fout?

Pagina: 1
Acties:

  • Palomar
  • Registratie: Februari 2000
  • Niet online
dit is een onderdeel van een scriptje:
PHP:
1
<?{    $foutmelding="Fout: Je hebt geen naam ingevuld";    Header("Location: schrijf.php?naam=$naam&amp;email=$email&amp;reactie=$reactie&amp;plaats=$plaats&amp;melding=$foutmelding");    exit;}?>

als een formulier niet goed is ingevuld wordt je teruggebracht naar schrijf.php en zijn alle velden weer ingevuld zoals je het had (email, reactie etc.) + komt er een melding dat je, in dit geval, geen naam hebt ingevuld.

Onder IE en netscape werkt dit allemaal prima, maar ik probeerde het net in Konqueror onder Linux en als ik het betreffende form submit krijg ik een syntax error van mn webserver.. Heb ik nu iets fout gedaan in dat scriptje of is dit gewoon een bug in Konqueror? :?

Verwijderd

Een url als:
schrijf.php?melding=Fout: je hebt geen ingevuld

is gewoon niet correct. Gebruik http://php.net/urlencode

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
ff zoiets proberen?
PHP:
1
<?$foutmelding = "Fout%3A%20Je%20hebt%20geen%20naam%20ingevuld";?>

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • Tain
  • Registratie: Januari 2002
  • Laatst online: 20-07 20:32
Is urlencode stuk makkelijker, want die doet dat al voor je.

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
Op dinsdag 12 maart 2002 17:41 schreef Tain het volgende:
Is urlencode stuk makkelijker, want die doet dat al voor je.
true :)

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • Palomar
  • Registratie: Februari 2000
  • Niet online
ok, ik heb nu het eea verandert, het ziet er nu zo uit:

$foutmelding=urlencode("Fout: Je hebt geen naam ingevuld");

en in Konqueror krijg ik geen syntax errors meer.. ik kan alleen nog steeds niet een formulier submitten in Konq. Als ik wél een naam invul krijg ik toch de melding "Je hebt geen naam ingevuld" :? Het lijkt wel of ie $naam niet meegeeft in Header..

complete script zal ik hieronder wel ff posten..

  • Palomar
  • Registratie: Februari 2000
  • Niet online
PHP:
1
<?$uitvoerbestand = "reacties.html";$bestandsindex = fopen($uitvoerbestand,"a");$uitvoerbestand2 = "loggb.txt";$log = fopen($uitvoerbestand2,"a");$datum = date("d-m-Y");$tijd = date("G:i") ;$reactie = stripslashes($reactie);$reactie = nl2br($reactie);$naam = HTMLSpecialChars($naam);$plaats = HTMLSpecialChars($plaats);$email = HTMLSpecialChars($email);$naam = urlencode($naam);$email = urlencode($email);$plaats = urlencode($plaats);if (strlen($naam)<1){    $foutmelding=urlencode("Fout: Je hebt geen naam ingevuld");    Header("Location: schrijf.php?naam=$naam&amp;email=$email&amp;reactie=$reactie&amp;plaats=$plaats&amp;melding=$foutmelding");    exit;}if (strlen($reactie)<2){    $foutmelding=urlencode("Fout: Je bent vergeten een reactie in te vullen");    Header("Location: schrijf.php?naam=$naam&amp;email=$email&amp;reactie=$reactie&amp;plaats=$plaats&amp;melding=$foutmelding");    exit;}if (strlen($email)<2){    $email="";}if (strlen($plaats)<1){    $plaats="onbekend";}if ($html <> aan){$reactie = HTMLSpecialChars($reactie);}$melding=urlencode("Bedankt voor je reactie, $naam");fwrite($bestandsindex, "<B>Reactie van <a href=mailto:$email>$naam</a> uit $plaats op $datum $tijd : </B><BR>");fwrite($bestandsindex, "$reactie<BR><BR><HR><BR>");fclose($bestandsindex);fwrite($log, "\r\n$datum $tijd - $naam $email $REMOTE_ADDR");fclose($log);header ("Location: index.php?melding=$melding"); ?>

  • Palomar
  • Registratie: Februari 2000
  • Niet online
iemand hier nog iets over te zeggen? :)

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 08:16
Ja:
if ($html <> aan){$reactie = HTMLSpecialChars($reactie);}
aan zal toch "aan" moeten zijn of maak er true van.

Daarnaast open je je bestanden wel erg vroeg is dat wel verstandig?? En de bestanden worden dan volgens mij niet gesloten, als de functie beindigd wordt door exit.

Daarnaast is het ook interessant om te weten, of er bij naam een waarde staat als je terug gaat naar de invulpagina?

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Op woensdag 13 maart 2002 13:39 schreef M4rt1nvW het volgende:
Ja:
[..]

aan zal toch "aan" moeten zijn of maak er true van.

Daarnaast open je je bestanden wel erg vroeg is dat wel verstandig?? En de bestanden worden dan volgens mij niet gesloten, als de functie beindigd wordt door exit.

Daarnaast is het ook interessant om te weten, of er bij naam een waarde staat als je terug gaat naar de invulpagina?
ok, ik zal er ff naar kijken.. die quotes om "aan" maakt volgens mij niks uit (itt java oid waar dat wel degelijk uitmaakt..) ik merk iig geen verschil..

en ik heb dat hele php ook maar geleerd aan de hand van een computer!totaal cursusje van 3 bladzijden.. en daar zaten blijkbaar wat fouten in.. zoals bestand zo vroeg openen en het feit dat het niet werkt onder Konqueror..

maar ik heb veel aan deze replies en zal het eea verbeteren :)

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 08:16
Is het vakje naam gevuld als je terug gestuurd ben naar de 'inlog'pagina.

Persoonlijk vond ik dat die cursus van computertotaal niet veel voorsteld, kijk eens rond op internet. http://www.phpfreakz.nl of http://php.pagina.nl

En het belangrijkste is lezen, veel lezen. Kijk naar andermans fouten en scriptjes en leer ervan.

Het is niet fout om bestanden zo vroeg te openen, maar waarom zou je, en het gaat 'fout' als je de 'functie' exit aanroept want je hebt de bestanden dan nog niet gesloten al zal php dat zelf wel doen, als hij je script heeft geparst.

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Op woensdag 13 maart 2002 16:47 schreef M4rt1nvW het volgende:
Is het vakje naam gevuld als je terug gestuurd ben naar de 'inlog'pagina
je bedoelt in het formulier? Ja, als iemand wél zn naam invult en geen reactie wordt ie teruggestuurd naar de pagina met formulier en staat zn naam were ingevuld (+ melding 'geen reactie')

Onder Konqueror gebeurt dit echter NIET.. het lijkt wel of er dan helemaal niks verstuurd wordt met het script.. maw. als ik een formulier volledig invul krijg ik de foutmelding "Je hebt geen naam ingevuld" :? Onder IE en Netscape werkt het wel..

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 08:16
Kun je voor de zekerheid ook even de bron van je invulformulier geven mischien dat iemand dan een ingeving krijgt?

http://home.concepts.nl/~stefan/php/manual/
ook een goede duidelijk site met enkele duidelijk voorbeelden.

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Op woensdag 13 maart 2002 16:58 schreef M4rt1nvW het volgende:
Kun je voor de zekerheid ook even de bron van je invulformulier geven mischien dat iemand dan een ingeving krijgt?

http://home.concepts.nl/~stefan/php/manual/
ook een goede duidelijk site met enkele duidelijk voorbeelden.
bedankt voor die url :)

mn form:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<form method="post" action="voegreactietoe.php">
  <table width="400" border="0" cellspacing="0" cellpadding="0">
    <tr> 
    <td>naam:</td>
    <td> 
      <input type="text" name="naam" value="<?php echo $naam ?>" maxlength="25">
      * </td>
    </tr>
    <tr> 
    <td>email:</td>
    <td> 
      <input type="text" name="email" value="<?php echo $email ?>" maxlength="25">
    </td>
    </tr>
    <tr> 
    <td>plaats: </td>
    <td> 
      <input type="text" name="plaats" value="<?php echo $plaats?>" maxlength="25">
    </td>
    </tr>
    <tr> 
    <td>reactie:</td>
    <td> <br>
      <textarea name="reactie" cols="40" rows="8"><?php echo $reactie ?></textarea>
      * </td>
    </tr>
    <tr> 
    <td>HTML:</td>
    <td> 
      <input type="checkbox" name="html" value="aan">
    </td>
    </tr>
    <tr> 
    <td>&nbsp;</td>
    <td> 
      <input type="submit" name="Submit" value="Versturen">
    </td>
    </tr>
  </table>
</form>

kan toch niet veel fout mee zijn..?

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 08:16
Ik had mijn op 1 na laatste post aangepast !

Ik kijk nu even of het bij mij wel werkt.

  • Palomar
  • Registratie: Februari 2000
  • Niet online
dit gebruik ik btw om reacties weer te geven:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<table width="550" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr> 
    <td> 
    <p><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000" size="2">klik 
      <a href="schrijf.php">hier</a> om een reactie te plaatsen</font></b></p>
    <p><b> 
      <?php echo $melding; ?>
      </b><b> </b></p>
    <br>
    <table width="525" border="0" cellspacing="0" cellpadding="0" align="center">
      <tr> 
        <td bgcolor="#0066CC"> 
        <?php
 if(!@include("reacties.html")) { echo("Leeg"); }
 ?>
        </td>
      </tr>
    </table>
    <p>&nbsp;</p>
    </td>
  </tr>
</table>

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 08:16
mischien is het wat mooier, als je voor je gegevens output nog even urldecode te doen voor je de gegevens uitput / wegschrijft.

De fout kan ik zelf niet vinden omdat ik geen Konqueror heb.

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 08:16
Rick k zie dat je al geprobeert hebt, lukt het nu wel. Want ik heb mischien wel wat kleinne dingen aan gepast, probeer het anders eens met get ipv post.

schrijf.php
PHP:
1
<?<HTML><HEAD><TITLE></TITLE></HEAD><BODY><form method="post" action="voegreactietoe.php">  <table width="400" border="0" cellspacing="0" cellpadding="0">    <tr>       <td>naam:</td>      <td>         <input type="text" name="naam" value="<?php echo urldecode($naam) ?>" maxlength="25">        * </td>    </tr>    <tr>       <td>email:</td>      <td>         <input type="text" name="email" value="<?php echo $email ?>" maxlength="25">      </td>    </tr>    <tr>       <td>plaats: </td>      <td>         <input type="text" name="plaats" value="<?php echo $plaats ?>" maxlength="25">      </td>    </tr>    <tr>       <td>reactie:</td>      <td> <br>        <textarea name="reactie" cols="40" rows="8"><?php echo $reactie ?></textarea>        * </td>    </tr>    <tr>       <td>HTML:</td>      <td>         <input type="checkbox" name="html" value="aan">      </td>    </tr>    <tr>       <td>&amp;nbsp;</td>      <td>         <input type="submit" name="Submit" value="Versturen">      </td>    </tr>  </table></form></BODY><HTML>?>

voegreactie.php
PHP:
1
<?// error_reporting(E_ALL);$datum = date("d-m-Y");$tijd = date("G:i") ;$reactie = stripslashes($reactie);$reactie = nl2br($reactie);$naam = HTMLSpecialChars($naam);$plaats = HTMLSpecialChars($plaats);$email = HTMLSpecialChars($email);$naam = urlencode($naam);$email = urlencode($email);$plaats = urlencode($plaats);if (strlen($naam)<1){        $foutmelding=urlencode("Fout: Je hebt geen naam ingevuld");    Header("Location: schrijf.php?naam=$naam&amp;email=$email&amp;reactie=$reactie&amp;plaats=$plaats&amp;melding=$foutmelding");    exit;}if (strlen($reactie)<2){    $foutmelding=urlencode("Fout: Je bent vergeten een reactie in te vullen");    Header("Location: schrijf.php?naam=$naam&amp;email=$email&amp;reactie=$reactie&amp;plaats=$plaats&amp;melding=$foutmelding");    exit;}if (strlen($email)<2){    $email="";}if (strlen($plaats)<1){    $plaats="onbekend";}if ($html <> "aan"){    $reactie = HTMLSpecialChars($reactie);}$melding=urlencode("Bedankt voor je reactie, $naam");$uitvoerbestand = "reacties.html";$bestandsindex = fopen($uitvoerbestand,"a");$uitvoerbestand2 = "loggb.txt";$log = fopen($uitvoerbestand2,"a");fwrite($bestandsindex, "<B>Reactie van <a href=mailto:$email>$naam</a> uit $plaats op $datum $tijd : </B><BR>");fwrite($bestandsindex, "$reactie<BR><BR><HR><BR>");fclose($bestandsindex);fwrite($log, "\r\n$datum $tijd - $naam $email $REMOTE_ADDR");fclose($log);header ("Location: index.php?melding=$melding"); ?><HTML><HEAD><TITLE></TITLE></HEAD><BODY></BODY><HTML>?>

index.php
PHP:
1
<?// error_reporting(E_ALL);$datum = date("d-m-Y");$tijd = date("G:i") ;$reactie = stripslashes($reactie);$reactie = nl2br($reactie);$naam = HTMLSpecialChars($naam);$plaats = HTMLSpecialChars($plaats);$email = HTMLSpecialChars($email);$naam = urlencode($naam);$email = urlencode($email);$plaats = urlencode($plaats);if (strlen($naam)<1){        $foutmelding=urlencode("Fout: Je hebt geen naam ingevuld");    Header("Location: schrijf.php?naam=$naam&amp;email=$email&amp;reactie=$reactie&amp;plaats=$plaats&amp;melding=$foutmelding");    exit;}if (strlen($reactie)<2){    $foutmelding=urlencode("Fout: Je bent vergeten een reactie in te vullen");    Header("Location: schrijf.php?naam=$naam&amp;email=$email&amp;reactie=$reactie&amp;plaats=$plaats&amp;melding=$foutmelding");    exit;}if (strlen($email)<2){    $email="";}if (strlen($plaats)<1){    $plaats="onbekend";}if ($html <> "aan"){    $reactie = HTMLSpecialChars($reactie);}$melding=urlencode("Bedankt voor je reactie, $naam");$uitvoerbestand = "reacties.html";$bestandsindex = fopen($uitvoerbestand,"a");$uitvoerbestand2 = "loggb.txt";$log = fopen($uitvoerbestand2,"a");fwrite($bestandsindex, "<B>Reactie van <a href=mailto:$email>$naam</a> uit $plaats op $datum $tijd : </B><BR>");fwrite($bestandsindex, "$reactie<BR><BR><HR><BR>");fclose($bestandsindex);fwrite($log, "\r\n$datum $tijd - $naam $email $REMOTE_ADDR");fclose($log);header ("Location: index.php?melding=$melding"); ?><HTML><HEAD><TITLE></TITLE></HEAD><BODY></BODY><HTML>?>

Gooi het adres even uit je message, thnx

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Op woensdag 13 maart 2002 17:44 schreef M4rt1nvW het volgende:
knip

voor diegene die even willen proberen.
* Palomar start zn linux bak met Konqueror

  • Palomar
  • Registratie: Februari 2000
  • Niet online
en jouw versie doet het wél met Konqueror... :?
echt vaag..

dan is het dus duidelijk dat ik iets verkeerd doe..

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 08:16
Irri gewoont bovenstaand bericht geedit :?

  • Palomar
  • Registratie: Februari 2000
  • Niet online
het was idd GET gebruiken ipv POST.. nu werkt het wel! :) thanx voor alle moeite :)

  • Palomar
  • Registratie: Februari 2000
  • Niet online
heb nog ff dr mee geklooit.. zie http://rhp.sytes.net/hp *D

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 08:16
Ondersteund je gastenboek HTML alsin:

<script language=JavaScript>
document.location = "http://www.anderesite.nl";
</script>

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Op donderdag 14 maart 2002 17:15 schreef M4rt1nvW het volgende:
Ondersteund je gastenboek HTML alsin:

<script language=JavaScript>
document.location = "http://www.anderesite.nl";
</script>
ik heb het volgende toegevoegd:

$reactie = ereg_replace( "script language", "j4v45cr1p7", $reactie);

zou dat voldoende zijn javascript0rs tegen te houden?

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 08:16
Oeps nu doet hij het wel, zie je mailbox >:)

<script> document.location = "http://www.tweakers.net"; </script>

Ik heb het nu zo gedaan, je hoeft de taal namelijk niet aan te geven. En door het op één regel te zetten omzeilde ik nltobr()

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Op donderdag 14 maart 2002 19:06 schreef M4rt1nvW het volgende:
Oeps nu doet hij het wel, zie je mailbox >:)

<script> document.location = "http://www.tweakers.net"; </script>

Ik heb het nu zo gedaan, je hoeft de taal namelijk niet aan te geven. En door het op één regel te zetten omzeilde ik nltobr()
haha :P heb ff weer wat aangepast:

$reactie = ereg_replace( "script", "5cr1p7", $reactie);

en volgens mij werkt het nu niet meer (hoop ik :P )

  • Xanthus
  • Registratie: Februari 2002
  • Laatst online: 11-07 12:45
Je kan ook even < vervangen door < en > door >
heb je meteen ook geen mensen die dingen doen als
<h1>your script sucks!</h1>
/edit
Ik moet echt eens refreshen voordat ik post :o

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-09 18:58
Check je pagina: http://rhp.sytes.net/hp/ :z

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Op donderdag 14 maart 2002 19:32 schreef Ericston het volgende:
http://www.php.net/manual/en/function.htmlspecialchars.php :z
als je ff gekeken had naar het scriptje zie je dat ik dat al gebruik :) Je kunt in het gastenboek daarna kiezen of je wel of niet HTML wilt gebruiken.. ok, zijn wat risico's aan verbonden maar het is wel handig als je een beetje html kunt..
maar misschien maak ik wel iets zoals dit forum ook heeft, dat je dmv [ b ] (ubb tags) etc. letters vet kan maken enzo.. maar das weer een volgende stap.. ben nog maar een beginner :)

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-09 18:58
Op donderdag 14 maart 2002 19:37 schreef Xanthus het volgende:
Je kan ook even < vervangen door < en > door >
heb je meteen ook geen mensen die dingen doen als
<h1>your script sucks!</h1>
Ja, zie mijn eennalaatste post...

rick_h: laat zowiezo geen HTML toe. Dus gebruik gewoon altijd htmlspecialchars() en eventueel UBB code ofzo.

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-09 18:58
Op donderdag 14 maart 2002 19:38 schreef rick_h het volgende:

[..]

als je ff gekeken had naar het scriptje zie je dat ik dat al gebruik :)
Als je even kijkt zie je dat je gastenboek alweer is ver**kt. :)

edit:
Ja mijn post effe vlug removen he?

Zo blijf je bezig...
code:
1
*knip*

Dit stond er, voor de liefhebbers. :)
Wel het vinkje voor HTML aandoen, want anders doet rick_h's script wel htmlspecialchars(). |:( :)

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Op donderdag 14 maart 2002 19:40 schreef Ericston het volgende:

[..]

Als je even kijkt zie je dat je gastenboek alweer is ver**kt. :)
ja zie het.. alweer weg gehaald.. er zijn gewoon talloze manieren om html te misbruiken.. optie is idd om html uit te zetten maar ik vertrouw er maar even op dat mensen niet zo lame zijn..

of ik maak iets zoals [ b ] vet [/ b], van die ubb tags.. moet nog ff uitzoeken hoe ik dat ga doen.. :)

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Op donderdag 14 maart 2002 19:40 schreef Ericston het volgende:
Dit stond er, voor de liefhebbers. :)
nu niet allemaal dat gaan invullen :o :X :P

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-09 18:58
Op donderdag 14 maart 2002 19:44 schreef rick_h het volgende:

[..]

nu niet allemaal dat gaan invullen :o :X :P
Muwhhahaha, boeten zal je! Boeten voor je onwetendheid! >:)

Nu mag je straks allemaal posts van die lamme mensjes gaan weghalen. ;)

Nah, ik haal het wel weer weg. * Ericston is liev.

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Op donderdag 14 maart 2002 19:52 schreef Ericston het volgende:

[..]

Muwhhahaha, boeten zal je! Boeten voor je onwetendheid! >:)

Nu mag je straks allemaal posts van die lamme mensjes gaan weghalen. ;)

Nah, ik haal het wel weer weg. * Ericston is liev.
:*

je hebt natuurlijk helemaal gelijk dat er _kan_ worden gerotzooit met html (op GoT stond het eerst ook aan....) en dat weet ik ook wel.. maar HTML gebruiken vind ik zelf wel een leuke optie.. en als er erg veel misbruik wordt gemaakt (of niet afgesloten tags) dan zet ik het wel uit..

ik ga sowieso bezig met een soort ubb code.. een nieuwe uitdaging ;)

  • Palomar
  • Registratie: Februari 2000
  • Niet online
ok, ik heb nu UBB codes werkend :) dwz [ b] [u ] en [i ], en urls met http worden automatisch een linkje :)
Pagina: 1