Variablen übergabe

FingerSkill

Erfahrenes Mitglied
Hallo,

ich habe zwei Seiten auf der ersten Seite ist ein Formular welches Daten (aus einer Text Area) an die zweite Seite übermittelt.

Wenn ich das Formular abschicke bekomme ich folgende Fehlermeldung:

Request-URI Too Large

The requested URL's length exceeds the capacity limit for this server.
Apache/2.0.54 (Linux/SUSE) Server at default Port 80


Diese Fehlermeldung bekomme ich egal ob ich per POST oder GET übermittle. Wie kann ich jetzt (egal wie viel Text) den Text aus der TextArea in z.B.: eine MySQL-DB, etc... speichern? Bzw. zumindest vollständig an die zweite Seite übermitteln.

Hoffe ihr könnt mir helfen,

Gruss Finga
 
Hier das Formular:

PHP:
<?
//Hereinladen der Klassen
  require_once('../classes/mysql.class.php');
  require_once('../classes/admingui.class.php');
  require_once('../classes/session.class.php');
  require_once('../classes/content.class.php');

//Hereinladen der Configs
  require_once('../config/db.config.php');

  $Session = new Session();
  $UserAuthID = $Session->get('UserAuthID');

//Session ueberprüfen

  if(!empty($UserAuthID))
  {
     $content = '<h2>Inhalt >> Seite bearbeiten</h2>';

    $dbConn = new MySQL(DB_HOST, DB_USER, DB_PASS, DB_NAME);
    $Content = new Content($dbConn, '');

    $Content = $Content->listContentRow($_GET['id']);

    $content .= '<h3>Seite bearbeiten</h3>';
    $content .= '<form id="Login" name="addContent" method="get" action="content.change.det.proz.php">
<table>
<tr>
<td>Hauptmenü ID: </td>
<td><input class="text" type="text" name="main" value="' . $Content['Menue_Main_ID'] . '" /></td>
</tr>
</table>
<input type="hidden" type="text" name="id" value="' . $_GET['id'] . '" /><textarea class="small" rows="25" cols="90" name="content">' . $Content['Content'] . '</textarea>
<br>
<input class="button" name="submit" type="submit" value="Übernehmen" />
</form>';

    AdminGUI::showIntern($content);
  }
  else
  {
    AdminGUI::showLogin();
  }
?>

Und hier nochmal der Code wo das ganze verarbeitete wird:

PHP:
<?
//Hereinladen der Klassen
  require_once('../classes/mysql.class.php');
  require_once('../classes/admingui.class.php');
  require_once('../classes/session.class.php');

//Hereinladen der Configs
  require_once('../config/db.config.php');

  $Session = new Session();
  $UserAuthID = $Session->get('UserAuthID');

//Session ueberprüfen

  if(!empty($UserAuthID))
  {
    $dbConn = new MySQL(DB_HOST, DB_USER, DB_PASS, DB_NAME);

    $content = '<h2>Inhalt >> Seite bearbeiten</h2>
<h3>Seite bearbeiten</h3>';

        if($dbConn->update('`Content`', '`Menue_Main_ID` = "' . $_GET['main'] . '", `Menue_Sub_ID` = "' . $_GET['sub'] . '", `Content` = "' . mysql_escape_string($_GET['content']) . '"', 'WHERE `ID` = "' . $_GET['id'] . '"'))
        {
          $content .= '<p class="error">Ihr Inhalt wurde geändert.</p>';
        }
        else
        {
          $content .= '<p class="error">Ihr Inhalt konnte nicht geändert werden, bitte wenden Sie sich and den Programmierer</p>';
        }
    AdminGUI::showIntern($content);
  }
  else
  {
    AdminGUI::showLogin();
  }
?>

Vielen dank für deine Hilfe.
 
Es ist eigentlich nix anderes als ein Mini CMS und das Formular welches ich oben gepostet hab, sollte den html-Inhalt der Page Speichern. Das funktioniert ja auch super ausser die Seite wird zu lange/gross.

Dank & Gruss Finga
 
Hi

ich rate jetzt mal aufs Blaue hinaus, aber vielleicht ist es ja möglich, das du mittels strlen() den Inhalt der Textarea überprüfst, und falls nötig, einer $_POST['erweitertung']; den Rest des Inhaltes zuweist, wobei ich vermute, dass es aus selben Grund fehlschlägt, aber eine Möglichkeit wäre es ja :)
 
Ja das hört sich eigentlich nicht schlecht an. Bzw. fällt mich schon nen Lösungsansatz ein.

Jetzt müsste ich nur mehr wissen wie viele zeichen ich max. übermitteln kann und ob ich diesen Fehlerbekomme weil 1. alles in allem zulange ist oder weil 2. nur eine Variable zulange ist?

Weil sonst würde ichs so machen das ich eine Variable ($TextLength) mitsende in welcher steht in wievielen Variablen der Text steht.

Also:
PHP:
for ($i = $TextLenght; $i >= 0; $i--) {
    $FullText .= $Text[$i];
}

So in die Richtung hätt ichs mir dann gedacht
 
Aktionen, die eine Datenänderung als Wirkung haben, sollten nur per POST übermittelt werden. Einerseits können damit nahezu beliebig viele Daten übermittelt werden. Andererseits sind damit einige Angriffe schwieriger auszuführen.
 
Die Methode GET kanst schon mal vergessen die ist auf 255 Zeichen beschränkt.

Die Methode POST sollte sich am Apache Server konfigurieren lassen. Kannste aber nur Umstellen wenn du dierekten zugang zum Server hast!

Müßte in der php.ini zu finden sein.

php_value post_max_size 12M

Anschließend die Maximal erlaubte größe eingeben.
Alternative kanst du sonst nur mit Dateiupload arbeiten.

Mfg Splasch
 
Ich hatte vorher alles mit POST, aber es ist dem Webserver egal ob ich mit GET oder POST übermittle. Es läuft in beiden Fällen exakt gleich ab.

Dank & Gruss Finga
 
Zuletzt bearbeitet:
Zurück