| Autor |
Nachricht |
escaPe
Threadersteller
Dabei seit: 10.09.2007
Ort: Bonn
Alter: 22
Geschlecht:
|
Verfasst Do 21.02.2008 15:25
Titel
|
 |
|
test.php5
| Code: | <?php
include 'test.class.php5.inc';
try {
$fpeForm = new fpeForm;
$fpeForm->sendPerMail('mail@irgendwohin.de');
echo $fpeForm->htmlOutput();
} catch(Exception $e) {
echo '<div style="border: 2px solid red">';
echo "Folgender Ausnahmefehler ist aufgetreten: <br/><b>". $e->getMessage()."</b>";
echo "<br/>in Datei {$e->getFile()}:{$e->getLine()}";
echo '</div>';
}
?>
|
und test.class.php5.inc
| Code: | <?php
/**
* Anwendung:
* 1. Skripte ins DocRoot der Domain legen
* 2. action im <form/>-Tag auf das skript ändern
* 3. hiddden-input hinzufügen: name=_vti_form mit Pfad
*
* @author Alexander Weiher
*
*/
class fpeForm {
// die restliche FTP-Config
private $fpeConfig = array();
private $fpeConfig2 = array();
private $form = false;
private $web_path = false;
private $storageFile = true;
private $webbotInsertHere = '<!--webbot BOT="FormInsertHere" -->';
private $labelFields = true;
private $reverseChronology = false;
const CSV_COMMA = 1;
const CSV_TABSTOP = 2;
const CSV_SPACE = 3;
function __construct() {
$this->loadConfig();
$this->storageFile = $_SERVER['DOCUMENT_ROOT'] .'/'.dirname($this->form).'/'. $this->fpeConfig['u-file'];
if( !is_file($this->storageFile) || !is_writeable($this->storageFile)) {
throw new Exception("StorageFile {$this->storageFile} existiert nicht (mehr) oder ist nicht beschreibbar. ");
}
$this->labelFields = $this->fpeConfig['s-label-fields'];
$this->reverseChronology = $this->fpeConfig['b-reverse-chronology'];
$this->datum = $this->fpeConfig['s-date-format'];
$this->uhrzeit = $this->fpeConfig['s-time-format'];
switch($this->fpeConfig['s-format']) {
case 'HTML/BR':
// html speichern
$this->saveAsHtmlBr();
break;
case 'HTML/DL':
// html deflist
$this->saveAsHtmlDl();
break;
case 'HTML/UL':
// html list
$this->saveAsHtmlUl();
break;
case 'HTML/PRE':
// html preformat text
$this->saveAsHtmlPre();
break;
case 'TEXT/PRE':
$this->saveAsTextPre();
break;
case 'TEXT/TSV':
$this->saveAsCSV(self::CSV_TABSTOP);
break;
case 'TEXT/SSV':
$this->saveAsCSV(self::CSV_SPACE);
break;
case 'TEXT/CSV':
$this->saveAsCSV(self::CSV_COMMA);
break;
default:
throw new Exception("unknown format: {$this->fpeConfig['s-format']}");
}
if($this->fpeConfig2['u-file']) {
$this->storageFile = $_SERVER['DOCUMENT_ROOT'] .'/'.dirname($this->form).'/'. $this->fpeConfig2['u-file'];
if( !is_file($this->storageFile) || !is_writeable($this->storageFile)) {
throw new Exception("StorageFile {$this->storageFile} existiert nicht (mehr) oder ist nicht beschreibbar. ");
}
$this->labelFields = $this->fpeConfig2['s-label-fields'];
$this->reverseChronology = $this->fpeConfig2['b-reverse-chronology'];
$this->datum = $this->fpeConfig2['s-date-format'];
$this->uhrzeit = $this->fpeConfig2['s-time-format'];
switch($this->fpeConfig2['s-format']) {
case 'HTML/BR':
// html speichern
$this->saveAsHtmlBr();
break;
case 'HTML/DL':
// html deflist
$this->saveAsHtmlDl();
break;
case 'HTML/UL':
// html list
$this->saveAsHtmlUl();
break;
case 'HTML/PRE':
// html preformat text
$this->saveAsHtmlPre();
break;
case 'TEXT/PRE':
$this->saveAsTextPre();
break;
case 'TEXT/TSV':
$this->saveAsCSV(self::CSV_TABSTOP);
break;
case 'TEXT/SSV':
$this->saveAsCSV(self::CSV_SPACE);
break;
case 'TEXT/CSV':
$this->saveAsCSV(self::CSV_COMMA);
break;
default:
throw new Exception("unknown format: {$this->fpeConfig2['s-format']}");
}
}
}
public function sendPerMail($mailAdress) {
$mailText = "*******************************************************************************\n\n";
foreach($_REQUEST as $key => $val) {
$mailText .= " * {$key}: {$val}\n";
}
mail($mailAdress, 'MailBetreffblablub' , $mailText);
}
public function htmlOutput() {
$output = '<h1>Formularbestätigung</h1>';
$output .= '<p>Vielen Dank für das Einsenden der folgenden Informationen:</p>';
$output .= '<p>';
foreach($_REQUEST as $key => $val) {
$output .= "<b>{$key}</b> {$val} <br/>";
}
$output .= '</p>';
$output .= "<p><a href='/{$this->form}'>Zurück zum Formular</a></p>";
$full_path = $_SERVER['DOCUMENT_ROOT'] .'/'. $this->form;
if( is_readable($full_path)) {
$results = array();
//$result = preg_replace( '/<form([^form]*?)<\/form>/s', $output, file_get_contents($full_path));
$result = preg_replace('/<!--(.*?)-->/s', '', file_get_contents($full_path));
$result = preg_replace( '%<(form).*<\/form>%is', $output, $result);
return $result;
} else {
return $output;
}
}
private function loadConfig() {
// ja, der Referer ist unzuverlässig .. aber wir brauchen trotzdem den dateinamen der letzen Seite ..
#$referer_form = parse_url($_SERVER['HTTP REFERER'], PHP_URL_PATH);
$this->form = $_REQUEST['_vti_form'];
$this->parseForm();
unset($_REQUEST['VTI-GROUP']);
unset($_REQUEST['_vti_form']);
}
private function saveAsCSV($divider) {
switch($divider) {
case self::CSV_COMMA:
$divider = ',';
break;
case self::CSV_SPACE:
$divider = ' ';
break;
case self::CSV_TABSTOP:
$divider = "\t";
break;
default:
throw new Execption('unknown divider defined');
}
$rvals = array();
foreach($_REQUEST as $rkey => $rval) {
$rvals[$rkey] = '"'.$rval.'"';
}
$csvString = implode($divider, $rvals)."\n";
$csvHandle = fopen($this->storageFile, 'a');
if(!$csvHandle) {
throw new Exception("Konnte Datei '{$this->storageFile}' nicht zum schreiben öffnen");
}
fputs($csvHandle,$csvString);
fclose($csvHandle);
}
private function saveAsHtmlBr() {
$values = '<p>';
foreach($_REQUEST as $rkey => $rval) {
$rkey = htmlentities($rkey);
$rval = htmlentities($rval);
if($this->labelFields == 'FALSE') {
$values .= "<b></b>{$rval}<br>";
} else {
$values .= "<b>{$rkey}</b>{$rval}<br>";
}
}
$values .= '</p><hr>';
if($this->reverseChronology == 'TRUE') {
// umgekehrte Reihenfolge ..
$output = $this->webbotInsertHere . $values;
} else {
$output = $values . $this->webbotInsertHere;
}
$this->_replaceWebbotTag($output);
}
private function saveAsHtmlDl() {
$values = '<hr><dl>';
foreach($_REQUEST as $rkey => $rval) {
$rkey = htmlentities($rkey);
$rval = htmlentities($rval);
if($this->labelFields == 'FALSE') {
$values .= "<dt><b></b></dt><dd>{$rval}</dd>";
} else {
$values .= "<dt><b>{$rkey}</b></dt><dd>{$rval}</dd>";
}
}
$values .= '</dl>';
if($this->reverseChronology == 'TRUE') {
// umgekehrte Reihenfolge ..
$output = $this->webbotInsertHere . $values;
} else {
$output = $values . $this->webbotInsertHere;
}
$this->_replaceWebbotTag($output);
}
private function saveAsHtmlUl() {
$values = '<hr><ul>';
foreach($_REQUEST as $rkey => $rval) {
$rkey = htmlentities($rkey);
$rval = htmlentities($rval);
if($this->labelFields == 'FALSE') {
$values .= "<li><b></b>{$rval}</li>";
} else {
$values .= "<li><b>{$rkey}</b>{$rval}</li>";
}
}
$values .= '</ul>';
if($this->reverseChronology == 'TRUE') {
// umgekehrte Reihenfolge ..
$output = $this->webbotInsertHere . $values;
} else {
$output = $values . $this->webbotInsertHere;
}
$this->_replaceWebbotTag($output);
}
private function saveAsHtmlPre() {
$values = "<hr><pre>";
foreach($_REQUEST as $rkey => $rval) {
$rkey = htmlentities($rkey);
$rval = htmlentities($rval);
if($this->labelFields == 'FALSE') {
$values .= "{$rval}\n";
} else {
$values .= "{$rkey}: {$rval}\n";
}
}
$values .= "</pre>";
if($this->reverseChronology == 'TRUE') {
// umgekehrte Reihenfolge ..
$output = $this->webbotInsertHere . $values;
} else {
$output = $values . $this->webbotInsertHere;
}
$this->_replaceWebbotTag($output);
}
private function saveAsTextPre() {
$values = str_pad('*', 79)."\n";
foreach($_REQUEST as $rkey => $rval) {
if($this->labelFields == 'FALSE') {
$values .= "{$rval}\n";
} else {
$values .= "{$rkey}: {$rval}\n";
}
}
$this->_replaceWebbotTag( $values . $this->webbotInsertHere);
}
private function _replaceWebbotTag($output) {
$content = file_get_contents($this->storageFile);
$content = str_replace($this->webbotInsertHere, $output, $content);
file_put_contents($this->storageFile, $content);
}
/**
* parse das Formular im Frontpage-Style *urx*
* - alle kommentare ..
* - .. die mit webbot anfangen ..
*/
private function parseForm() {
$full_path = $_SERVER['DOCUMENT_ROOT'] .'/'. $this->form;
if( is_readable($full_path)) {
$results = array();
$results_count = preg_match_all( '/<!--(.*?)-->/s', file_get_contents($full_path), $results);
if($results_count) {
foreach($results[1] as $res) {
if(substr($res,0,6) == 'webbot') {
$options = substr($res,7);
foreach(explode(' ', $options) as $tok) {
list($key, $value) = explode('=', $tok);
$key = strtolower($key);
if(array_key_exists($key, $this->fpeConfig)) {
$this->fpeConfig2[$key] = substr($value,1,-1);
} else {
$this->fpeConfig[$key] = substr($value,1,-1);
}
}
}
}
return true;
} else {
throw new Exception("Es wurden keine FPE-Metainformationen in der Formular-datei ({$full_path}) gefunden .. ");
}
}
throw new Exception("Konnte Formular {$full_path} nicht lesen.");
}
}
?> |
um mal licht ins dunkle zu bringen was das alles soll:
Firma hat Jahre lang frontpage mit dazugehörigen extensions benutzt. Server hat diese nun
abgestellt und nun muss ich daraus irgendwie was gescheites in php zusammenbaun..
klappt auch soweit ausser das halt die checkboxen in der .txt datei beim "nicht markiertem"
status keine werte in die txt eintragen, und somit alle nachkommenden Wert um eine, oder bei mehr
checkboxen, mehrer spalten nach vorne rutscht.
Zuletzt bearbeitet von escaPe am Do 21.02.2008 15:30, insgesamt 3-mal bearbeitet
|
|
| |
|
 |
escaPe
Threadersteller
Dabei seit: 10.09.2007
Ort: Bonn
Alter: 22
Geschlecht:
|
Verfasst Do 21.02.2008 18:22
Titel
|
 |
|
kann mir keiner helfen und sagen wo ich diesen codeschnipsel eintragen muss?
vielleicht verlang ich aber auch nur zuviel.. trotzdem danke für die hilfe...
greatz escaPe
|
|
| |
|
 |
Fido67
Account gelöscht
Ort: -
|
Verfasst Fr 22.02.2008 09:50
Titel
|
 |
|
überleg doch mal was der Code von Pixelpole macht, dann weist du auch wo der hin muss.
| Code: | if(!isset($_POST['test'])) { //Wenn die Variable $_Post['test'] keinen Wert hat
$_POST['test'] = 'NEIN'; // dann ist der Wert der Variablen "NEIN"
} |
Das muss natürlich vor der Funktion eingesetzt werden die den Wert der Variablen $_POST['test'] in deine .txt-Datei speichert oder sonst wie ausgibt
|
|
| |
|
 |
escaPe
Threadersteller
Dabei seit: 10.09.2007
Ort: Bonn
Alter: 22
Geschlecht:
|
Verfasst Fr 22.02.2008 12:35
Titel
|
 |
|
ich würd sagen das der nach dem include in der test.php5 rein müsste
hat aber nicht geklappt. Vielleicht steh ich aber auch nur einfach afu dem Schlauch.
|
|
| |
|
 |
Fido67
Account gelöscht
Ort: -
|
Verfasst Fr 22.02.2008 12:40
Titel
|
 |
|
|
naja, wenn dann wohl eher davor, sonst können die includierten funktionen ja nicht auf die Variable zugreifen.
|
|
| |
|
 |
escaPe
Threadersteller
Dabei seit: 10.09.2007
Ort: Bonn
Alter: 22
Geschlecht:
|
Verfasst Fr 22.02.2008 12:57
Titel
|
 |
|
klappt leider nicht...
| Code: |
<?php
if(!isset($_POST['test']))
{
$_POST['test'] = 'NEIN';
};
include 'fpeForm.class.php5.inc';
try {
$fpeForm = new fpeForm;
$fpeForm->sendPerMail('mail@mailadresse.de');
echo $fpeForm->htmlOutput();
} catch(Exception $e) {
echo '<div style="border: 2px solid red">';
echo "Folgender Ausnahmefehler ist aufgetreten: <br/><b>". $e->getMessage()."</b>";
echo "<br/>in Datei {$e->getFile()}:{$e->getLine()}";
echo '</div>';
}
?> |
Zuletzt bearbeitet von escaPe am Fr 22.02.2008 12:58, insgesamt 1-mal bearbeitet
|
|
| |
|
 |
Fido67
Account gelöscht
Ort: -
|
Verfasst Fr 22.02.2008 13:03
Titel
|
 |
|
|
mit welcher Methode schickst du dein Formular ab?
|
|
| |
|
 |
escaPe
Threadersteller
Dabei seit: 10.09.2007
Ort: Bonn
Alter: 22
Geschlecht:
|
Verfasst Fr 22.02.2008 13:11
Titel
|
 |
|
| Code: | | <form method="POST" action="_vti_form/shtml.php5" onsubmit="return FrontPage_Form1_Validator(this)" language="JavaScript" name="FrontPage_Form1" webbot-action="--WEBBOT-SELF--"> |
|
|
| |
|
 |
| |
|
 |
| Ähnliche Themen |
Formular - Checkbox Abfrage in PHP
radio-button und checkbox => PHP-Abfrage
[php] mehrere Werte per checkbox übergeben
[php) "checkbox abfrage" wer kann helfen
input.checkbox
Checkbox die wegspringt ...
|
 |