Deutscher Support > Generelle Fragen
Problem mit eigener $_POST-funktion
(1/1)
Guenni:
Hallo alle zusammen,
ich bin ein Frischling in Sachen vlib und habe ein Problem, was ich mir nicht erklären kann.
ich würde gerne folgende funktion verwenden
--- Code: ---function POST($name) {
return htmlspecialchars(stripslashes(strip_tags($_POST[$name])));
}
--- End code ---
binde ich allerdings die include ein, die diese funktion beinhaltet bleibt mein output weiß.
nehm ich die funktion wieder raus klappt alles einwandfrei. funktion wieder rein - weiße seite.
hab durch debug-messages das problem wirklich auf diese funktion eingegrenzt, denn ein output VOR der funktion wird ausgegeben, NACH der funktion nicht.
sogar die funktion
--- Code: ---function x_POST($name) {
return($_POST[$name]);
}
--- End code ---
klappt nicht.
jemand eine idee oder am besten sogar eine lösung ? ;D
danke im voraus
guenni
Guenni:
PS : die funktion wird dabei noch nichtmal verwendet (!).
allein das parsen bringt schon das problem...
ich hab bis jetzt das template gebastelt und bin jetzt dabei den code dahinterzubauen.
es befindet sich noch kein quelltext im programm, außer das aufbereiten der loop-arrays aus php-arrays, die ich zum füllen von formularfeldern brauche.
Guenni:
Sorry für das 3-fach posting :|
ich poste am besten nochmal den problem-quelltext.
in der include wird die o.g. funktion eingebunden.
add_item.php :
--- Code: ---require include.php;
$loop = array();
for($i = 0; $i < sizeof($faecher); $i++) {
$loop[$i]["name"] = $faecher[$i];
$loop[$i]["select_id"] = $i;
}
$add_item->setloop(fach,$loop);
$add_item->pparse();
--- End code ---
was ich noch hinzufügen kann ist, dass die funktion komischerweise beim parsen von anderen seiten keine probleme auswirft, deswegen poste ich auch nochmal das template-file. vllt ist hier der fehler begraben
template
--- Code: ---<center>
<table class=add_item_table>
<form action=index.php?nav=2 method=post>
<tr>
<td id="table_head" colspan=2><b><center>Artikel eingeben </b></td>
<tr>
<td id=eingabe>Verkäufer</td>
<td><input type=text size=30 name=name></td>
</tr>
<tr>
<td id=eingabe>Passwort :</td>
<td><input type=password size=15 name=pass1></td>
</tr>
<tr>
<td id=eingabe>Passwort wiederholen:</td>
<td><input type=password size=15 name=pass2></td>
</tr>
<tr>
<td id=eingabe>E-Mail</td>
<td><input type=text size=30 name=mail1></td>
</tr>
<tr>
<td id=eingabe>E-Mail wiederholen</td>
<td><input type=text size=30 name=mail2></td>
</tr>
<tr>
<td id=eingabe>Schulfach</td>
<td>
<select size=1 name=fach>
<tmpl_loop name=fach>
<option value={tmpl_var name=select_id escape=none}>{tmpl_var name=name escape=none}</option>
</tmpl_loop>
</select>
</td>
</tr>
<tr>
<td id=eingabe>Stufe</font></td>
<td>
<select size=1 name=stufenwahl>
<option value=5>5</option>
<option value=6>6</option>
<option value=7>7</option>
<option value=8>8</option>
<option value=9>9</option>
<option value=10>10</option>
<option value=11>11</option>
<option value=12>12</option>
<option value=13>13</option>
</select>
</td>
</tr>
<tr>
<td id=eingabe>Autor</td>
<td><input type=text size=42 name=autor></td>
</tr>
<tr>
<td id=eingabe>Titel</td>
<td><input type=text size=42 name=titel></td>
</tr>
<tr>
<td id=eingabe>ISBN</td>
<td><input type=text size=15 maxlength=15 name=isbn></td>
</tr>
<tr>
<td id=eingabe>Preis</td>
<td><input type=text size=5 maxlength=6 name=preis> €</td>
</tr>
<tr>
<td id=eingabe>Informationen</td>
<td><textarea style="background-color:white; border:1px solid;"rows=5 cols=40 name=infos></textarea></td>
</tr>
<tr>
<td id=eingabe colspan=2><center><input type=submit name=eintragen value=Eintragen>
<input type=reset value=Abbrechen>
</td>
</tr>
</table>
</form>
</body>
</html>
--- End code ---
ClausVB:
Ich möchte nicht Dein ganzes Template debuggen, das ist mir zu lang. Ich möchte einen Skript und ein Template, dass dieses Problem klar und deutlich reproduziert.
Dieses Reproduktions-Skript sollte auf keinen Fall das reservierte Wort POST enthalten, weil dieses für HTML und $_POST reserviert ist. vLIB verwendet einen solchen Funktionsnamen nicht.
Nenn die Funktion wie Du willst, aber bitte nicht "POST". Da sich das Problem mit "x_post" wahrscheinlich auch reproduzieren lässt, sollte es aber möglich sein, ein kurzes, übersichtliches Skript zu schreiben, dass den Fehler auf den Punkt bringt.
Die genannte Funktion macht auch keinen Sinn, weil man einfach schreiben kann:
--- Code: ---<?php
$inhalt_der_variable = htmlspecialchars(stripslashes(strip_tags($_POST[inhalt_der_variable])));
?>
--- End code ---
Ausnahme: Man will das für jede Variable einsetzen, dann sollte man die Funktion aber eher "html_code_bereinigen" oder so nennen.
$_POST ist eine sogenannte "Superglobal" und überall verfügbar. Entweder man verwendet das direkt oder nimmt eine Zuweisung vor, wie sie oben beschrieben ist.
Danke und Gruß
Claus
Navigation
[0] Message Index
Go to full version