- Home
- Categorie
- Coding e Sistemistica
- PHP
- Url troppo lungo da errore
-
Url troppo lungo da errore
Buongiorno!
Sto creando un piccolo forum tutto in php e MySQL(Simple Net Forum)...
Adesso avrei un piccolo problemino...
Questo è l'errore:Request-URI Too Large
The requested URL's length exceeds the capacity limit for this server. request failed: URI too long
Apache/1.3.34 Server at localhost.local Port 80
E adesso vi spiego...
Praticamente, quando un utente crea un nuovo topic, ho messo anche il bottoncino Anteprima il quale apre una piccola finestra e li l'utente può vedere l'anteprima del suo messaggio...
Ecco il codice:[PHP]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Crea un nuovo topic</TITLE>
<link rel="stylesheet" type="text/css" href="cssindex/stile.css">
<script language="JavaScript" type="text/javascript">
<!--
function verifica(form) {
if( confirm("Sei sicuro di voler continuare?") ) {
return true;
}
return false;
}// -->
</script>
</head>
<BODY>
<center><?php
####Controlla se ci sono i parametri get adeguati###
if(!isset($_GET['fs']) ||
!isset($_GET['t']) ||
!is_numeric($_GET['t']) ||
!is_numeric($_GET['fs'])) die ("Il link non contiene parametri GET adeguati, potresti averli modificati.</center></body></html>");
require("config.php");Recupero il titolo del forum dal DB
$query2 = @mysql_query("SELECT * FROM snf_main WHERE snf_id = '" . $_GET[fs] . "'")or die("Fatal ERROR: ".mysql_error());
if(mysql_num_rows($query2) != 1)die("Fatal ERROR: Il forum non esiste!");
$result2 = @mysql_fetch_array($query2);if(isset($_COOKIE['username'])){
?>
<form method="post" action="snf_post_topic.php" name = "form1">
<table border="0" width="95%" height="455"><tbody>
<tr>
<td width="100%" colspan="2" height="131">
<?php
if(isset($_COOKIE['username'])) echo "Benvenuto, <b>".$_COOKIE['username']."</b>! <a href = "snf_logout.php">LogOut</a>";
?> <center>
<ul id="menu">
<li><a href="index.php" target="_self" title="Home!" >Home</a></li>
<li><a href="loginpage.php" target="_self" title="Login!">Login</a></li>
<li><a href="register.php" target="_self" title="Registrati!" >Registrazione</a></li>
<li><a href="#" target="_self" title="Profilo!">Profilo</a></li>
<li><a href="#" target="_self" title="Frequently Asked Questions!">FAQ</a></li>
</ul> </center></td>
</tr>
<tr> <td colspan="2" align="left" width="50%" height="66"> <div class="hr"><hr /></div> <h3><font color="#3366ff" face="Trebuchet MS" size="3"><?php echo "<a href=\"index.php\">Main</a> »";
echo "<a href="show.php?fs=$_GET[fs]">";
echo $result2[snf_title]."</a> » Nuovo topic";
?></font></h3></td> </tr> <tr> <td align="left" width="50%" bgcolor="#D2EFE2" height="30"><font face="Trebuchet MS" size="2">Titolo</font></td> <td align="left" width="53%" bgcolor="#D2DEF6" height="30"><font face="Trebuchet MS" size="2"><input name="topic_title" class="textbox" type="text" size="20" ></font><font color="#3366FF" face="Trebuchet MS" size="4">*</font></td> </tr> <tr> <td align="left" width="50%" bgcolor="#D2DEF6" height="45" valign = "top"><font face="Trebuchet MS" size="2">Contenuto</font></td> <td align="left" width="53%" bgcolor="#D2EFE2" height="45"><font face="Trebuchet MS" size="4"><textarea name="topic_contents" class="textbox" size="20" rows="20" cols="90%"></textarea><font color="#3366FF">*</font></font></td> <input name = "topic_user" value = "<?php echo $_COOKIE['username']; ?>" type = "hidden"> </tr> <tr> <td colspan="2" align="left" width="50%" height="66"> <div class="hr"><hr /></div> <p align="center"> <input value="Submit" onClick="return verifica(this);" name="submit" class="button" type="submit" title="Registrati!"> <input value="Anteprima" name="preview" class="button" type="submit" title="Anteprima" onClick = "a = document.form1.topic_title.value; b = document.form1.topic_contents.value;window.open('preview.php?title='+escape(a)+'&topic_contents='+escape(b)+'','Anteprima','width=600,height=600 ,toolbar=no, location=no,status=yes,menubar=no,scrollbars=yes,resizable=no');return false;"> </td> </tr> <tr> <td colspan="2" align="left" width="50%" height="65"> <p> </p> <p> </p> </td> </tr> </tbody>
</table>
</form></center>
<?php
} else {
echo "Effettua il <a href = "loginpage.php">LogIn</a> oppure <a href = "register.php">Registrati</a>";
}?>
<p><BR></BODY></HTML>[/PHP]
Ed ecco la stringa incriminata:<input value="Anteprima" name="preview" class="button" type="submit" title="Anteprima" onClick = "a = document.form1.topic_title.value; b = document.form1.topic_contents.value;window.open('preview.php?title='+escape(a)+'&topic_contents='+escape(b)+'','Anteprima','width=600,height=600 ,toolbar=no, location=no,status=yes,menubar=no,scrollbars=yes,resizable=no');return false;">
Praticamente, questa piccola porzione di javascript preleva il testo dai due campi(snf_title e snf_contents)e crea un parametro get del tipo:
previw.php?title=titolodelcampo&contents=contenutoSe il contenuto è troppo lungo(e quindi di conseguenza l'url diventa praticamente luuuunghissimo) mi da l'errore che ho riportato sopra...avete dei consigli?:(:(
-
Invece di aprire il popup passando i valori tramite querystring, aprilo ed inviaci i dati con una form con il metodo POST.
In ogni caso, non è un problema di PHP ma di HTTP/Javascript.
-
Si potrebbe anche risolvere mettendo nella pagina che riceve i dati post(ovvero snf_post_topic.php) questo codice:
<?php
if(isset($_POST['submit'])) {
inserisci i dati
}elseif(isset($_POST['anteprima')){
vedi l'anteprima
}?>
giusto?
-
Perché non ti ispiri al forum gt?
Quando clicchi su anteprima si ricarica la pagina mostrando l'anteprima e subito sotto nuovamente il form per le modifiche...