Seite 1 von 2

eigene Seite im ACP

Verfasst: 08.06.2006 21:27
von SKYSURFER2002
Hi Modder,


ich muss mein PHPbb noch ein wenig aufpimpen. Dazu habe ich ein kleines Script geschrieben. Dies funktioniert auch wunderbar, zumindest ohne das PHPbb. Ich habe mir dann den Mod für die Blank Admin Page gezogen, und meine Code dann einfach eingefügt. Die Seite wird auch richtig geladen. Doch wenn ich dann meine Eingabe posten möchte, wird im rechten Frame der normale Forumsindex geladen. Es wird auch kein Eintrag in der Datenbank geschrieben. Nun wo ist mein Problem?

Hier mal der Code:

Code: Alles auswählen

<?php
/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

define('IN_PHPBB', 1);

if( !empty($setmodules) )
{
   $file = basename(__FILE__);
   $module['Info']['erstellen'] = "$file";
   return;
}

//
// Load default header
//
$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
require('./pagestart.' . $phpEx);
require($phpbb_root_path . 'information/wer_config.php');
// alt include("http://127.0.0.1/phpbb/information/wer_config.php");


echo "
<form action=\"admin_info_erstellen.php\" method=\"POST\">
<table width=\"600\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">
<tr>
<td width=\"300\" align=\"center\">Bild groß</td>
<td width=\"300\" align=\"center\">Bitte OHNE *.jpg angeben!</td>
</tr>
<tr>
<td><input type=\"text\" maxlength=20 name=\"datei\" size=\"15\" class=\"inputtext\" tabindex=\"1\"></td>
<td></td>
</tr>
</table>
<table width=\"600\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">
<tr>
<td height=\"15\"></td>
</tr>
</table>

<table width=\"600\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">
<tr>
<td width=\"600\">Startdatum:</td>
</tr>
</table>
<table width=\"600\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">
<tr>
<td>Tag:</td>
<td>Monat:</td>
<td>Jahr:</td>
<td>Stunde:</td>
<td>Minute:</td>
<td>Sekunde:</td>
</tr>
<tr>
<td><input type=\"text\" maxlength=2 name=\"stag\" size=\"3\" class=\"inputtext\"></td>
<td><input type=\"text\" maxlength=2 name=\"smonat\" size=\"3\" class=\"inputtext\"></td>
<td><input type=\"text\" maxlength=4 name=\"sjahr\" size=\"5\" class=\"inputtext\"></td>
<td><input type=\"text\" maxlength=4 name=\"sstunde\" size=\"5\" class=\"inputtext\"></td>
<td><input type=\"text\" maxlength=4 name=\"smin\" size=\"5\" class=\"inputtext\"></td>
<td><input type=\"text\" maxlength=4 name=\"ssec\" size=\"5\" class=\"inputtext\"></td>
</tr>
</table>
<table width=\"600\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">
<tr>
<td height=\"15\"></td>
</tr>
</table>

<table width=\"600\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">
<tr>
<td width=\"600\">Enddatum:</td>
</tr>
</table>
<table width=\"600\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">
<tr>
<td>Tag:</td>
<td>Monat:</td>
<td>Jahr:</td>
<td>Stunde:</td>
<td>Minute:</td>
<td>Sekunde:</td>
</tr>
<tr>
<td><input type=\"text\" maxlength=2 name=\"etag\" size=\"3\" class=\"inputtext\"></td>
<td><input type=\"text\" maxlength=2 name=\"emonat\" size=\"3\" class=\"inputtext\"></td>
<td><input type=\"text\" maxlength=4 name=\"ejahr\" size=\"5\" class=\"inputtext\"></td>
<td><input type=\"text\" maxlength=4 name=\"estunde\" size=\"5\" class=\"inputtext\"></td>
<td><input type=\"text\" maxlength=4 name=\"emin\" size=\"5\" class=\"inputtext\"></td>
<td><input type=\"text\" maxlength=4 name=\"esec\" size=\"5\" class=\"inputtext\"></td>
</tr>
</table>
<input type=\"hidden\" name=\"send\" value=\"1\" />
<input type=\"submit\" value=\"Posten\" class=\"sendtext\">
</form>";

// timestamp erzeugen
$startzeit = mktime($_POST[sstunde],$_POST[smin],$_POST[ssec],$_POST[smonat],$_POST[stag],$_POST[sjahr]);
$endzeit = mktime($_POST[estunde],$_POST[emin],$_POST[esec],$_POST[emonat],$_POST[etag],$_POST[ejahr]);

// Bilder mit Endung
$bild = $_POST[datei] . $endung;
$thumb = $_POST[datei] . $sufflexthumb . $endung;

// In die Datenbank schreiben
if(isset($_POST['send']) && $_POST['send'] == 1)
    {
    
echo $startzeit;
echo "<br>";
echo $endzeit;

        $sql_insert = "INSERT INTO info ( datei, dateiklein, startzeit, endzeit) VALUES ('$bild', '$thumb', '$startzeit', '$endzeit')";
        $result = mysql_query($sql_insert, $mdb);
    
    echo "Der Datensatz wurde gespeichert!";
}

include('./page_footer_admin.'.$phpEx);

?>
Muss ich mich an das Templatesystem vom PHPbb halten? Noch ne Session übergeben? Ich steh gerade voll nebenmir! :oops:

Für jede Hilfe bin ich sehr dankbar.


Christian

Verfasst: 09.06.2006 11:42
von S2B
An deine Form-Action muss die Session-ID angehängt werden (mit der Funktion append_sid()).

Verfasst: 09.06.2006 14:08
von SKYSURFER2002
Und wie mach ich das mit der session?


Christian

Verfasst: 09.06.2006 16:49
von S2B

Code: Alles auswählen

<form action="<?php echo append_sid("admin_info_erstellen.$phpEx") ?>" method="post">
Nur frage ich mich, was denn gegen das Template-System spricht!?

Verfasst: 09.06.2006 17:37
von fanrpg
S2B hat geschrieben:An deine Form-Action muss die Session-ID angehängt werden (mit der Funktion append_sid()).
:roll: Nein, Falsch 8)
Das wichtige ist einfach das die Seite nicht komplett neulädt (das passiert ohne target="" in form) sondern nur im rechten frame passiert.
sprich <form ... target="main">
Die Session-ID hohlt er sich dann über die index.php?sid=xXx
Aber das ist ja in dem Fall von phpBB vorgegeben.

Verfasst: 09.06.2006 20:40
von SKYSURFER2002
Danke für die vielen Antworten.

Wie ich mir schon fast gedacht hatte, macht die Mischung aus div. Antworten das Rennen.

Lösung:

Code: Alles auswählen

...
$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
require('./pagestart.' . $phpEx);
require($phpbb_root_path . 'information/wer_config.php');
// alt include("http://127.0.0.1/phpbb/information/wer_config.php");


?>
<form action="<?php echo append_sid("admin_info_erstellen.$phpEx") ?>" method="POST" target="main">
<table width="600" cellspacing="0" cellpadding="0" border="0">
<tr>
<td width="300" align="center">Bild groß</td>
<td width="300" align="center">Bitte OHNE *.jpg angeben!</td>
</tr>
<tr>
<td><input type="text" maxlength=20 name="datei" size="15" class="inputtext" tabindex="1"></td>
<td></td>
</tr>
</table>
<table width="600" cellspacing="0" cellpadding="0" border="0">
<tr>
<td height="15"></td>
</tr>
</table>

<table width="600" cellspacing="0" cellpadding="0" border="0">
<tr>
<td width="600">Startdatum:</td>
</tr>
</table>
<table width="600" cellspacing="0" cellpadding="0" border="0">
<tr>
<td>Tag:</td>
<td>Monat:</td>
<td>Jahr:</td>
<td>Stunde:</td>
<td>Minute:</td>
<td>Sekunde:</td>
</tr>
<tr>
<td><input type="text" maxlength=2 name="stag" size="3" class="inputtext"></td>
<td><input type="text" maxlength=2 name="smonat" size="3" class="inputtext"></td>
<td><input type="text" maxlength=4 name="sjahr" size="5" class="inputtext"></td>
<td><input type="text" maxlength=4 name="sstunde" size="5" class="inputtext"></td>
<td><input type="text" maxlength=4 name="smin" size="5" class="inputtext"></td>
<td><input type="text" maxlength=4 name="ssec" size="5" class="inputtext"></td>
</tr>
</table>
<table width="600" cellspacing="0" cellpadding="0" border="0">
<tr>
<td height="15"></td>
</tr>
</table>

<table width="600" cellspacing="0" cellpadding="0" border="0">
<tr>
<td width="600">Enddatum:</td>
</tr>
</table>
<table width="600" cellspacing="0" cellpadding="0" border="0">
<tr>
<td>Tag:</td>
<td>Monat:</td>
<td>Jahr:</td>
<td>Stunde:</td>
<td>Minute:</td>
<td>Sekunde:</td>
</tr>
<tr>
<td><input type="text" maxlength=2 name="etag" size="3" class="inputtext"></td>
<td><input type="text" maxlength=2 name="emonat" size="3" class="inputtext"></td>
<td><input type="text" maxlength=4 name="ejahr" size="5" class="inputtext"></td>
<td><input type="text" maxlength=4 name="estunde" size="5" class="inputtext"></td>
<td><input type="text" maxlength=4 name="emin" size="5" class="inputtext"></td>
<td><input type="text" maxlength=4 name="esec" size="5" class="inputtext"></td>
</tr>
</table>
<input type="hidden" name="send" value="1">
<input type="submit" value="Posten" class="sendtext">
</form>

<?php

// timestamp erzeugen
$startzeit = mktime($_POST[sstunde],$_POST[smin],$_POST[ssec],$_POST[smonat],$_POST[stag],$_POST[sjahr]);
$endzeit = mktime($_POST[estunde],$_POST[emin],$_POST[esec],$_POST[emonat],$_POST[etag],$_POST[ejahr]);

...
Danke an alle.
Nur frage ich mich, was denn gegen das Template-System spricht!?
Nichts, aber ich möchte erst wissen, ob die Funktion klappt, und dann wird das Template erstellt.

Christian

Verfasst: 09.06.2006 22:03
von S2B
@fanrpg: Eine Datei in einem Frame kommt nicht an die Datei mit dem Frameset ran, das eine ist server-, das andere clientseitig. Das Problem lag in der Tat nur daran, dass die Session-ID im Admin-Panel immer im GET-Parameter stehen muss, und zwar bei jeder noch so kleinen Datei. :wink: Abgesehen davon läd der Form-Tag ohne Angabe des targets wie jeder a-Tag im gleichen Frame, und nicht in _parent.

Verfasst: 09.06.2006 22:50
von fanrpg
Glaub mir, ich hatte solche Probleme auch wie er oben (ist schon was länger her :D ) und mit targer="main" waren die dann weg auch _ohne_ Session-ID nochmal extra per GET zu übertragen.

Verfasst: 09.06.2006 22:52
von S2B
Und jetzt verwendest du in allen MODs target="main"? :o Das glaub ich dir nicht. :wink:

Verfasst: 09.06.2006 22:59
von fanrpg
S2B hat geschrieben:Und jetzt verwendest du in allen MODs target="main"? :o Das glaub ich dir nicht. :wink:
Nein habe mittlerweile einen anderen Weg gefunden das auszutricksen :grin: