Newsgroup: it.comp.www.php
Titolo: htmlentities -Non funge-

Salve a tutti,
ho problema abbastanza anomalo, ma sono certo di aver sbagliato qualcosa 
(anche se nn capisco cosa..).
Vi illustro il questito:
Ho un guestbook che funge bene, ora, per evitare tag HTML inutili (o 
maligni) ho inserito la funzione "htmlentities", ma nel momento che passa la 
query nn fa il suo compito.. Ecco lo script:
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO tblguest (nome, `data`, messaggio) 
VALUES (%s, %s, %s)",
                       GetSQLValueString($_POST['nome'], "text"),
                       GetSQLValueString($_POST['data'], "text"),
                       GetSQLValueString($_POST['messaggio'], "text"));
  mysql_select_db($database_miodatabase, $miodatabase);
  $Result1 = mysql_query($insertSQL, $miodatabase) or die(mysql_error());
  $insertGoTo = "guest.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
L'ho riletto mille volte, ma nn riesco a trovare l'errore.
Grazie anticipatamente per l'aiuto. 

                        GetSQLValueString($_POST['messaggio'], "text"));
Io la metterei qui.
GetSQLValueString(htmlentities($_POST['nome'], "text")),
GetSQLValueString(htmlentities($_POST['data'], "text")),
GetSQLValueString(htmlentities(_POST['messaggio'], "text")));
Max
-- 
http://www.maxori.it

 
http://www.maxori.it
Grazie, ma nn è servito, mi dice:
Warning: htmlentities() expects parameter 2 to be long, string given in 
c:\programmi\easyphp\www\miosito\insert_guest.php on line 35
Warning: Missing argument 2 for getsqlvaluestring() in 
c:\programmi\easyphp\www\miosito\insert_guest.php on line 3
Scusami, ma avevo omesso al codice, la prima parte:
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", 
$theNotDefinedValue = "") {
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO tblguest (nome, `data`, messaggio) VALUES 
(%s, %s, %s)",
GetSQLValueString($_POST['nome'], "text"),
GetSQLValueString($_POST['data'], "text"),
GetSQLValueString($_POST['messaggio'], "text"));
mysql_select_db($database_miodatabase, $miodatabase);
$Result1 = mysql_query($insertSQL, $miodatabase) or die(mysql_error());
$insertGoTo = "guest.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo)); }
Questo è il codice intgrale.
Grazie ancora.

 c:\programmi\easyphp\www\miosito\insert_guest.php on line 35
In effetti c'è un errore. La parentesi di chiusura va messa dopo il POST
e non dopo il secondo parametro di GetSQLValueString.
GetSQLValueString(htmlentities($_POST['nome']), "text"),
Max
-- 
http://www.maxori.it

 
http://www.maxori.it
OK, perfetto, ti ringrazio, nn avevo mai usato questa formula, mi ero sempre 
trovato bene con la vecchia funzione, ma in effetti questa č piů semplice.
Grazie ancora.