Hallo,
seit vielen Jahren nutzen wir schon Admidio, doch unsere vielen Plugins, die wir täglich brauchen, haben es uns schwer gemacht, auf die 3er Version zu wechseln.
Doch nun ist es so weit, denn auch aus Sicherheitsgründen ist uns der Wechseln wichtig.
Nun aber zu unserem Problem.
Ein Plugin prüft, ob neue Emails in Form eines Formulars eingegangen sind. Ist das der Fall, lässt sich selktieren, ob der Absender ein Mitglied werden soll.
Damit werden dann alle Daten in die User und Member Tabelle eingetragen und ggf. auch die dazugehörigen Einstellungen gesetzt.
Mit der alten Version konnte ich das Skript durchlaufen lassen und mit exit() beenden.
Doch die neue Version mag kein exit() mehr. Auch in der Doku finde ich keine Alternativen.
Wer hat hat da eine Alternative für mich?
Gesendet von iPad mit Tapatalk
Exit Funktion
Re: Exit Funktion
Hallo Tomtom,
bitte beschreibe noch einmal genauer, wie das Plugin integriert ist (wird was sichtbares angezeigt, wird das Script bei jedem Seitenaufruf durchlaufe). Die Exit()-Funktion ist ja von PHP und sollte eigentlich weiterhin funktionieren. Ggf. passt etwas nicht zur neuen Logik.
Was passiert denn jetzt, wenn du exit aufrufst? Läuft das Script wirklich weiter oder hat es nur den Anschein.
Viele Grüße
Fasse
bitte beschreibe noch einmal genauer, wie das Plugin integriert ist (wird was sichtbares angezeigt, wird das Script bei jedem Seitenaufruf durchlaufe). Die Exit()-Funktion ist ja von PHP und sollte eigentlich weiterhin funktionieren. Ggf. passt etwas nicht zur neuen Logik.
Was passiert denn jetzt, wenn du exit aufrufst? Läuft das Script wirklich weiter oder hat es nur den Anschein.
Viele Grüße
Fasse
Re: Exit Funktion
Hallo,
erstmal vielen Dank für die schnelle Antwort.
Das Plugin ist eine eigenständige Seite, die über die Navigation aufgerufen wird und ihren Pfad im Plugin-Ordner findet.
Die Seite basiert auf Admidio, so dass die Optik und der Datenbankaufruf impliziert ist. Die Seite sieht zunächst so aus, wie im Screenshot. Der ist aktuell von heute. Das sind also Anfragen von Mitgliedern, die bereits Mitglied sind, oder es werden möchten.
Sind es keine Mitglieder und es sollen aber welche werden, so klicke ich auf das Datenbanksymbol der einzelnen Anfrage und ein neues Skript wird aufgerufen, was viele Kriterien prüft und ggf. dann das neue Mitglied mit allen Daten, die es im Anmeldeformular getätigt hat, in der Datenbank übernommen.
Das erspart uns unglaublich viel Zeit und deshalb ist es uns auch so wichtig.
Jedenfalls hier einen Ausschnitt des Codes;
Für den Fall, dass das Mitglied nun schon in der Datenbank eingetragen ist, soll das Script abbrechen, was ich zuvor mit exit(); gelöst hatte. Hat auch immer funktioniert, nur mit dieser aktuellen Version nicht.
Nun zur Frage, was passiert.
Egal wo meine exit(); steht, ich sehe nur eine weiße Seite. Es ist auch kein Quellcode zu sehen.
Das Skript wird aber abgebrochen! es findet kein Eintrag in der Datenbank statt.
Ohne exit(); werden die Mitglieder als doppeltes Mitglied in die Datenbank geschrieben.
Ich vermute, dass mir irgendwo, das $page->show(); aufgehoben wird????
Dazu muss ich noch erwähnen, dass das Skript in eine Seite reingeladen wird, damit ich die Ausgabe gewährleisten kann.
Die Hauptdatei sieht derzeit so aus;
Edit:
PS: das exit(); egal wo es steht, führt das gesamte Skript nicht aus. Auch wenn das Mitglied nicht vorhanden ist.
Deswegen gehe ich von einem Fehler aus.
erstmal vielen Dank für die schnelle Antwort.
Das Plugin ist eine eigenständige Seite, die über die Navigation aufgerufen wird und ihren Pfad im Plugin-Ordner findet.
Die Seite basiert auf Admidio, so dass die Optik und der Datenbankaufruf impliziert ist. Die Seite sieht zunächst so aus, wie im Screenshot. Der ist aktuell von heute. Das sind also Anfragen von Mitgliedern, die bereits Mitglied sind, oder es werden möchten.
Sind es keine Mitglieder und es sollen aber welche werden, so klicke ich auf das Datenbanksymbol der einzelnen Anfrage und ein neues Skript wird aufgerufen, was viele Kriterien prüft und ggf. dann das neue Mitglied mit allen Daten, die es im Anmeldeformular getätigt hat, in der Datenbank übernommen.
Das erspart uns unglaublich viel Zeit und deshalb ist es uns auch so wichtig.
Jedenfalls hier einen Ausschnitt des Codes;
Code: Alles auswählen
if(!$usd_usr_id) { //wenn keine usd_usr_id übergeben wurde, wird die maximale ermittelt und eins draufgezählt
//Abfrage ob Mitglied schon in Datenbank
$abfrage_kd = "SELECT * FROM ".$tabellenname2 . " WHERE usd_usf_id = 1 " ;
$ergebnis_kd = $z_erg = $gDb->query($abfrage_kd) or die ('<font color="#FF0000">Fehler: ' . mysql_error() . ' - '.$abfrage_kd.'</font>');
while($row_kd = $ergebnis_kd->fetch()) {
if($row_kd['usd_value'] == $row['field16']) { //Wenn der Nachname übereinstimmt, Vorname laden
$abfrage_kdn = "SELECT * FROM ".$tabellenname2 . " WHERE usd_usr_id = " . $row_kd['usd_usr_id'] . " AND usd_usf_id = 2 LIMIT 1" ;
$ergebnis_kdn = $z_erg = $gDb->query($abfrage_kdn) or die ('<font color="#FF0000">Fehler: ' . mysql_error() . ' - '.$abfrage_kdn.'</font>');
$row_kdn = $ergebnis_kdn->fetch();
if($row_kdn['usd_value'] == $row['field15']) { //test ob Vorname übereinstimmt, wenn ja, fehler und abbruch
$page->addHtml('<font color="#FF0000"><img src="'.$g_root_path.'/adm_themes/modern/icons/warning_big.png" /> Fehler:<br />
<strong>Mitglied bereits in der Datenbank,<br />
oder zufällig doppelter Name.<br />
<br />
Auswertung nur von Vor- und Nachname.
</strong>
</font>
<br /><br />
<a href="/index.php"><strong><img src="'.$g_root_path.'/adm_themes/modern/icons/home.png" /> Zurück zur Kundenverwaltung</strong></a>');
}
}
}
Für den Fall, dass das Mitglied nun schon in der Datenbank eingetragen ist, soll das Script abbrechen, was ich zuvor mit exit(); gelöst hatte. Hat auch immer funktioniert, nur mit dieser aktuellen Version nicht.
Nun zur Frage, was passiert.
Egal wo meine exit(); steht, ich sehe nur eine weiße Seite. Es ist auch kein Quellcode zu sehen.
Das Skript wird aber abgebrochen! es findet kein Eintrag in der Datenbank statt.
Ohne exit(); werden die Mitglieder als doppeltes Mitglied in die Datenbank geschrieben.
Ich vermute, dass mir irgendwo, das $page->show(); aufgehoben wird????
Dazu muss ich noch erwähnen, dass das Skript in eine Seite reingeladen wird, damit ich die Ausgabe gewährleisten kann.
Die Hauptdatei sieht derzeit so aus;
Code: Alles auswählen
require_once('../../adm_program/system/common.php');
$registrationOrgId = $gCurrentOrganization->getValue('org_id');
// if current user has no login then only show registration dialog
if($gValidLogin == false)
{
$getNewUser = 2;
}
// if new_user isn't set and no user id is set then show dialog to create a user
if($getUserId == 0 && $getNewUser == 0)
{
$getNewUser = 1;
}
if($getRemoveUrl == 1)
{
$gNavigation->deleteLastUrl();
}
$headline = 'Mitglider-Datenübernahme';
$page = new HtmlPage($headline);
if($gValidLogin == 1)
{
require_once('inc/maildaten.inc.php');
$page->show();
}else{
$page->addHtml('
<div class="panel panel-default" id="user_data_panel">
<div class="panel-heading">Sie haben keine Berechtigung für diese Seite!!!</div>
</div>');
$page->show();
}
PS: das exit(); egal wo es steht, führt das gesamte Skript nicht aus. Auch wenn das Mitglied nicht vorhanden ist.
Deswegen gehe ich von einem Fehler aus.