Raadsel met POST

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ger Eielts

Ger Eielts

11/11/2015 17:06:36
Quote Anchor link
Ik laat een formulier invullen en verwerk het met POST.
Een foutmelding is gemaakt, wanneer het veld leeg is.

Als ik nu iets kopieer en plak in het betreffende veld volgt de foutmelding.
Als ik gewoon iets intik volgt geen foutmelding en wordt alles correct verwerkt.
Als ik iets intik en daarna iets plak in hetzelfde veld dan volgt de foutmelding.
Als ik eerst iets plak en daarna wat intik in hetzelfde veld volgt wederom de foutmelding.

Blijkbaar gaat er dus iets fout door het plakken.
Wat zie ik over het hoofd?

Ger.
 
PHP hulp

PHP hulp

16/11/2024 08:46:08
 
- Ariën  -
Beheerder

- Ariën -

11/11/2015 17:10:02
Quote Anchor link
Heb je een voorbeeld die we kunnen bekijken, en heb je ook relevante code die we kunnen inzien?

Ik gok dat hij bepaalde tekens niet accepteert vanwege een reguliere expressie? En misschien wel een UTF-8/ANSI-issue?
 
Thomas van den Heuvel

Thomas van den Heuvel

11/11/2015 17:11:14
Quote Anchor link
Is dit eigen geschreven code? of een pakket?
Kun je broncode laten zien?
Waar vul je wat in?
Welke foutmelding krijg je?
Verschilt hetgeen je knipt en plakt op een bepaalde manier van hetgeen je intypt?

Het bovenstaande klinkt meer als een raadsel dan een vraagstuk, het is nogal vaag op deze manier.
 
Ger Eielts

Ger Eielts

11/11/2015 17:18:18
Quote Anchor link
Arien - de code is nogal lang, dus zal ik die helemaal tonen?
Thomas - eigen geschreven code. Kan de broncode laten zien. Eigen gemaakte foutmelding. Geen verschil tussen intypen en knip/plakken.

Ik herinner me, dat code tonen op dit forum met een bepaalde tag moet. Als je me die kan geven, zal ik
de code tonen.
 
- Ariën  -
Beheerder

- Ariën -

11/11/2015 17:44:26
Quote Anchor link
Ger Eielts op 11/11/2015 17:18:18:
Arien - de code is nogal lang, dus zal ik die helemaal tonen?

Daarom vraag ik de relevante code die te maken heeft met het invoegen en controleren van je invoer. Ik neem aan dat dit geen honderd regels lang zal zijn.
Gewijzigd op 11/11/2015 17:45:25 door - Ariën -
 
Ger Eielts

Ger Eielts

11/11/2015 18:06:23
Quote Anchor link
ok,


OMS wordt als volgt gevuld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
    <tr>

<td colspan="4" valign="top" > Omschrijving incident: <textarea name="OMS" id="OMS" rows="20" cols="80"><?php echo $OMSincident;?></textarea></td>
<td colspan="2" rowspan="2" valign="top"><textarea name="Fouten" id="Fouten" rows="21" style="color:red" style="background:#99FFFF"><?php echo $NietIngevuld . $FoutIngevuld; ?></textarea></td>

</tr>


In if ($_SERVER["REQUEST_METHOD"] == "POST") {

wordt het volgende getest:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
   $OMSincident
= test_input($_POST["OMS"]); wordt
   if ($OMSincident == "") {
       $NietIngevuld = $NietIngevuld . "Omschrijving incident &#13;&#10;";
   }


test_input zie er als volgt uit:

function
test_input($data) {
   $data = trim($data);  
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   $data = str_replace(array("\n", "\r"), ' ', $data);
   return $data;
}


En via javascript wordt de foutmelding getoond:

<
script type="text/javascript">

    function
Errors() {

        var
show = document.getElementById("Fouten");
        var
NI = "<?php echo $NietIngevuld; ?>";
        var
FI = "<?php echo $FoutIngevuld; ?>";

        if (NI == "" && FI == "") {
            show.style.display = "none";
        }

        else {
            show.style.display = "block";
        }

    }

?>

etc.

Kun je hier iets mee ?

- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 11/11/2015 18:55:19 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

11/11/2015 20:56:58
Quote Anchor link
Welke PHP-versie gebruik je?
Wat is de accept-charset van je formulier?
Of de Content-Type van je HTML-document?

htmlspecialchars($string) retourneert een lege string als de character encoding van $string niet overeenkomt met de default character encoding behorend bij jouw PHP-versie (omdat je deze zelf niet opgeeft in htmlspecialchars()).

Heb je al gedebugged of $data leeg is (eventueel voor/na aanroep van htmlspecialchars())?

EDIT: daarbij, wat doe je vervolgens met $OMSincident? Sla je dit op in een database? Maar dan ben je daar bezig met het op voorhand escapen van input :/. Het is beter om dit pas te doen voordat je dit afdrukt (als output). Ook zijn dit niet de juiste functies om dit in een database te zetten, daarvoor zijn real_escape_string() functies.
Gewijzigd op 12/11/2015 13:29:36 door Thomas van den Heuvel
 
Ger Eielts

Ger Eielts

14/11/2015 23:40:15
Quote Anchor link
Quote:
htmlspecialchars($string) retourneert een lege string als de character encoding van $string niet overeenkomt met de default character encoding behorend bij jouw PHP-versie (omdat je deze zelf niet opgeeft in htmlspecialchars()).
[unquote]

Lag idd aan het feit, dat ik de charset niet opgaf in htmlspecialchars...

Opgelost... bedankt !!

gr. Ger.
 



Overzicht Reageren

 
 

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.