$PHP_SELF Variable in eingebundener php-Seite

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
REincarnation
Mitglied
Beiträge: 321
Registriert: 16.10.2003 10:06
Wohnort: Rostock
Kontaktdaten:

$PHP_SELF Variable in eingebundener php-Seite

Beitrag von REincarnation »

Moinsen,

ich habe eine extra Seite in mein phpBB v2.0.11 eingebunden. Es soll ein einfacher Marketingrechner werden. Die Seite sieht bisher so aus...

Code: Alles auswählen

<?php 
//Benötigte Dateien und Variablen von phpBB 
define('IN_PHPBB', true); 
$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 


//Session auslesen und Benutzer-Informationen laden 
$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 

//Dieser Block kann weggelassen werden, wenn du nur den die Userdaten brauchst und auf den phpBB-Header verzichen möchtest 
$page_title = 'CvR Onlinemarketing'; 
include($phpbb_root_path . 'includes/page_header.'.$phpEx); 

// Config
$klick = "0.258620689";
$anzahl = $_POST['anzahl'];
// Formel
$ergebnis = number_format($klick*$anzahl/100*116,2,",",".");
?>
<table width="100%" cellspacing="1" cellpadding="4" border="0" align="center" class="nav">
  <tr>
    <td class="nav" align="left" valign="middle"><a href="index.php">CVR & ML Board Foren-&Uuml;bersicht</a></td>
  </tr>
</table>

<br>
<table width="100%" border="0" cellpadding="2" cellspacing="1" class="forumline">
  <tr>
    <th height="25" colspan="2" nowrap="nowrap">CvR Onlinemarketing </th>
  </tr>
  <tr>
    <td class="row"><p><br>
	<table width="90%" border="0" cellpadding="0" cellspacing="0" align="center">
	  <tr>
	    <td>
      Werben Sie auf unseren Seiten und unterst&uuml;tzen Sie uns als Verein in unserer Arbeit. Mit einer durchschnittlichen Besucherzahl von 11.500 Visits pro Monat erreichen Sie ein breitgef&auml;chertes Publikum. Ausf&uuml;hrliche Statistiken und individuell angepasste Pakete erm&ouml;glichen Ihnen so einen umfassenden &Uuml;berblick. </p>
<p>  Nutzen Sie dazu doch einfach unseren Marketingrechner.</p>
<form method="post" action="<? echo $PHP_SELF ?>" onSubmit="return chkFormular()" name="Formular">
		  <table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
        	<tr valign="middle">
        	  <td height="30" colspan="2"><strong>Rechnen Sie ihr individuelles Angebot... </strong></td>
       	    </tr>
        	<tr>
          	  <td>Klicks pro Monat: </td>
          	  <td align="right"><input type="text" name="anzahl" value="<? echo $anzahl; ?>" style="text-align:right;"></td>
        	</tr>
        	<tr align="right">
        	  <td height="30" colspan="2" valign="middle"><input type="submit" name="submit" value="Berechnen"></td>
       	    </tr>
      	  </table>
</form>

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
  	<td>
<?php
if ($submit) {
	echo '<table width="500" border="0" cellpadding="0" cellspacing="0" align="center">
			<tr>
			  <td width="200"><b>Monatlicher Betrag:</b></td>
			  <td align="right" width="300"><b>' . $ergebnis . ' €</b></td>
			</tr>
			<tr>
			  <td colspan="2"><br><font color="red" size="1">Das vorstehende Angebot ist unverbindlich und freibleibend. Der Endbetrag versteht sich inklusive 16% Mehrwertsteuer.</font></td>
			</tr>
		  </table>';
} else {
	echo '';
}
?>
	</td>
  </tr>
</table>

<p>Auf Wunsch erstellen wir Ihnen auch ein passendes Banner f&uuml;r Ihre Kampagne. Sprechen Sie uns an.</p>
<p>Email: XXX</p>
<p>&nbsp;</p>
		  </td>
  	  	</tr>
	  </table>
	</td>
  </tr>
</table>

<?php
//Footer - nur dann weglassen, wenn du auch den Header weglässt 
include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 
?>
Ohne die phpbb-Angaben funktioniert das Script. Nur wenn ich es eingebunden und hochgeladen habe, erscheint keine if-Bedingung ($submit). Könnt ihr mir auf die Sprünge helfen, wo mein Fehler liegt?
Computerverein Rostock e.V.
Bloßes Ignorieren ist noch keine Toleranz.
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

  1. Man prüft die Existenz einer Variablen mit isset();
    $submit existiert nur bei register_globals on was "aus" sein muss.
  2. Man verwendet das PHPBB Environment wenn man darin etwas einbindet daher muss man auch.....$HTTP_POST_VARS['submit'] und $HTTP_SERVER_VARS['PHP_SELF']
    verwenden.................da $_POST etc. entfernt wird durch das Environment
  3. Was soll das darstellen ein Zahlenformat was als String angesehen wird ? $klick = "0.258620689";
  4. Warum steht HTML in einem template basierenden Board im Code ?
  5. Debugging?
Benutzeravatar
REincarnation
Mitglied
Beiträge: 321
Registriert: 16.10.2003 10:06
Wohnort: Rostock
Kontaktdaten:

Beitrag von REincarnation »

Erstmal danke. Nur übersteigt das fürs Erste mein phpbb-Verständnis. Nicht jeder ist Profi - sonst wären wir nicht hier. Kannstu mir das mit dem Environment genauer erklären?
Computerverein Rostock e.V.
Bloßes Ignorieren ist noch keine Toleranz.
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

REincarnation hat geschrieben:Erstmal danke. Nur übersteigt das fürs Erste mein phpbb-Verständnis. Nicht jeder ist Profi - sonst wären wir nicht hier. Kannstu mir das mit dem Environment genauer erklären?
In der common.php vom PHPBB werden diverse Sicherheitseinstellungen die in PHP möglich sind simuliert, da dies möglicherweise falls man sich auf irgendwelche Pseudo Admin Konfigurationen naiv stützt zum Supergau führen könnte. Daher werden u.A. registierte Variabeln entfernt und bestehende Superglobale Array wie $_POST kopiert und $HTTP_POST_VARS zugewiesen. Weil $_POST ist u.A. erst seit ca. PHP 4.1.0 eingeführt worden.

Um die unterschiedlichen PHP Versionen in ihren Eigenheiten zu unterstützen gibt es u.A. dieses Environment....
Benutzeravatar
REincarnation
Mitglied
Beiträge: 321
Registriert: 16.10.2003 10:06
Wohnort: Rostock
Kontaktdaten:

Beitrag von REincarnation »

Ah alles klar...gut. Gut dann weiß ich schon wieder mehr. Nur ich verstehe dennoch nicht, wie ich das nun auf meine Seite anwenden kann. ich bin leider noch nicht so bewandert in php und habe mir das bisher nur durch lesen mit Mühe und Not angeeignet. Wie ich jetzt festgestellt habe nichtmal auf dem neuesten Stand bzgl. register_globals. Das mit der Variable prüfen durch isset() habe ich umgesetzt. Nur der Rest macht noch Schwierigkeiten.
Computerverein Rostock e.V.
Bloßes Ignorieren ist noch keine Toleranz.
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Jeder fängt mal klein aber was hast du für Probleme noch? :wink:
Benutzeravatar
REincarnation
Mitglied
Beiträge: 321
Registriert: 16.10.2003 10:06
Wohnort: Rostock
Kontaktdaten:

Beitrag von REincarnation »

Ehrlich gesagt verstehe ich immernoch nicht wie ich die Variablen verwenden muss. Muss ich dann noch Änderungen in der common.php vornehmen? Könntest du mir sonst mal eine Codestelle für mich posten, wie es eingebaut werden muss? Normalerweise versuche ich sowas selbst hinzukriegen, aber ich habs gestern versucht und nichts gebacken bekommen.
Computerverein Rostock e.V.
Bloßes Ignorieren ist noch keine Toleranz.
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

mach mal ein

Code: Alles auswählen

echo "<pre>";
print_r($HTTP_POST_VARS);
echo "</pre>";
Auch solltest du $PHP_SELF durch $HTTP_SERVER_VARS['PHP_SELF'] ersetzen......

Am besten Kontrollierst du im Browserquelltext ob das Formular an die richtige Datei indem Fall an sich selbst geschickt wird.....

BTW: Du solltest dennoch die Template Engine verwenden, man sieht hier z.B. genau das unübersichtlich wird....
Benutzeravatar
REincarnation
Mitglied
Beiträge: 321
Registriert: 16.10.2003 10:06
Wohnort: Rostock
Kontaktdaten:

Beitrag von REincarnation »

Also ich habe es nun geschafft, dass das Formular an sich selbst sendet. Nur leider funktioniert die if( isset($submit)) Funktion noch nicht. Das Ergebnis wird nicht angezeigt.

Ich habe mal meine Datei verlinkt: marketing.php.txt

Mit dem Templatesystem wollte ich das auch noch versuchen. Nur wollte ich das Script erstmal zum laufen bekommen. Danach versuche ich es anzupassen.
Computerverein Rostock e.V.
Bloßes Ignorieren ist noch keine Toleranz.
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Du solltest schon aus if (isset($submit)) auch ein

Code: Alles auswählen

if( isset($HTTP_POST_VARS['submit']) )
machen :D

BTW: Die Verzweigung danach

Code: Alles auswählen

else {
echo '';
}
ist denke ich sinnfrei... :wink:
Antworten

Zurück zu „Coding & Technik“