Aug 12

Grüße,

Auf der suche nach einigen  Beispielen und Tutorials, die uns erklären könnten, wie man die Filemaker.php anwendet und einbindet, findet man leider nicht wirklich ein gutes Anwendungsbeispiel. In meinem Tutorial werde ich nicht auf alles eingehen können, da die Dokumentation die ihr im Netz an jeder Ecke finden könnt, alles gut erklärt und das natürlich auch in Deutsch.

Dokumentation

Kurze Anleitung

Wie man ein Formular erstellt, und es verwendet wird, werde ich hier nicht erklären. Das sollte Voraussetzung sein!

Als erstes coden wir die Verbindung zu Filemakerdatenbank:

$fm = new FileMaker();
$fm->setProperty(‘database’, ‘Meine Datenbank’);
$fm->setProperty(‘hostspec’, ‘localhost’);
$fm->setProperty(‘username’, ‘name’);
$fm->setProperty(‘password’, ‘passwort’);

Jetzt überprüfen wir ob Werte in unseren $_POST Variablen gesetzt wurden.

if (isset($_POST['form_username']) && $_POST['form_username'] != “”) {
$web_login_query = array(‘web_name’ => $_POST['form_username'], ‘web_pass’ => $_POST['form_passwort']);
if (!isset($web_login_query['web_pass']) or $web_login_query['web_pass'] == “”) {
$smarty->assign(‘fehler’, “Passwort vergessen.”);

Sollten alle Werte gesetzt sein, erstellen wir eine  Filemaker Instanz und nehmen die Verbindung mit unserer Datenbank auf.
newFindCommand(‘web_login’) ist das Layout, addFindCriterion ist die Bedingung. Das Feld, bzw. der Wert der zurück kommt, ist die USER_ID, also ist USER_ID unser ($)result

} else {

$new = $fm->newFindCommand(‘web_login’);
$new->addFindCriterion(‘username’,$web_login_query['web_name']);
$new->addFindCriterion(‘passwort’,$web_login_query['web_pass']);
$result = $new->execute();

Jetzt prüfen wir ob auch die Verbindung mit unserer Datenbank erfolgreich war.

if (FileMaker::isError($result)) {

echo ‘Error: ‘ . $result->getCode() . ”;
$fm_fehler = $result->getCode();
$smarty->assign(‘fehler’, $fm_fehler);
header(“Location: index.php?module=login&err=$fm_fehler”);

}

Sollte ein Fehler auftreten sein, springt er zurück zum angegeben Template.  Dabei übergebe ich den Fehlercode von Filemaker. In der PDF findet ihr die Bedeutung der Codes. Wir stellen fest, das es kein Fehler in unseren Login gibt und das die Zugangsdaten übereinstimmen. Jetzt lassen wir uns die USER_ID zurückgeben und packen sie in unsere Session. Vielleicht ein USER_LEVEL, wer mag.

$records = $result->getRecords();
$user_id = $records[0]->getField(‘tn_id’);

$_SESSION['user_id'] = $user_id;
setcookie(“user_level”, ’6′, time()+3600);
header(“Location: index.php”);

}

Jetzt kommt noch der Teil, der einspringt, wenn von Anfang an schon ein Fehler vorhanden ist. Zum Beispiel Passwort oder Username, oder beides wurde vergessen.

} else {
if ($_GET['err'] == “401″) {
$smarty->assign(‘fehler’, “Ihre Zugangsdaten sind ungültig.”);
} else {
$smarty->assign(‘fehler’, “Bitte geben Sie ihre Zugansdaten ein und drücken sie auf Anmelden.”);
}
}
?>

Es gibt bestimmt noch einige Sachen die man Optimieren kann bzw. unbedingt muss, doch sollte hier der kleine Auszug nur verdeutlichen wie man das ungefähr angehen kann..

Aber es geht! :)

Tschaui