SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 16.11.2016, 17:53:52
fx1984 fx1984 ist offline
Anfänger
 
Registriert seit: Nov 2016
Alter: 39
Beiträge: 20
AW: Klassenfunktion aus Formular aufrufen?

Was machst du denn genau mit der ersten Zeile?

Code:
if (preg_match('/\.(?:html)$/', $_SERVER['REQUEST_URI'])) return false;
oder was bdeutet das hier genau?

Code:
(?:html)
Mit Zitat antworten
  #12  
Alt 17.11.2016, 08:41:41
chorn chorn ist offline
Junior Member
 
Registriert seit: Apr 2016
Alter: 44
Beiträge: 171
AW: Klassenfunktion aus Formular aufrufen?

Die Zeile hab ich doch extra kommentiert, ignorierst du das einfach?

Ausserdem:

Zitat:
minimal example of URL to class::method routing
Wenn du da noch ein paar Zeichen sparen willst, dann mach das, es gibt auch noch andere Wege das umzusetzen - aber bei effektiv 10 Zeilen Code weiss ich nicht was man da noch eindampfen soll, da ist nur eine Funktion die wirklich was macht, es fehlt komplett alles an Fehlerabfrage. Und das ist ein lauffähiges Bspl, einfach runterladen und starten. Oder du machst erstmal deine 100 Routen von Hand mit if/else und guckst dann was besser geht. Und wie DEIN Index dann aussehen soll kannst du selbst entscheiden, das hat mit dem Router erstmal nichts zu tun.
Mit Zitat antworten
  #13  
Alt 17.11.2016, 15:21:59
fx1984 fx1984 ist offline
Anfänger
 
Registriert seit: Nov 2016
Alter: 39
Beiträge: 20
AW: Klassenfunktion aus Formular aufrufen?

Ich glaub so langsam komm ich dahinter aber irgendwie noch nicht wirklich...
Ich schau mir das nachher nochmal genauer an. Aber gib mir doch mal ein Beispiel für eine index.php... Bitte :)

Geändert von fx1984 (17.11.2016 um 15:37:19 Uhr)
Mit Zitat antworten
  #14  
Alt 17.11.2016, 17:14:54
chorn chorn ist offline
Junior Member
 
Registriert seit: Apr 2016
Alter: 44
Beiträge: 171
AW: Klassenfunktion aus Formular aufrufen?

Benenn die Datei einfach um.

https://en.wikipedia.org/wiki/Front_controller
Mit Zitat antworten
  #15  
Alt 17.11.2016, 17:45:04
fx1984 fx1984 ist offline
Anfänger
 
Registriert seit: Nov 2016
Alter: 39
Beiträge: 20
AW: Klassenfunktion aus Formular aufrufen?

Ich glaub ich habs verstanden... ich probier das jetzt aus und mach mir so einen Router. Wie findest du denn diesen Weg?

https://web-developer-blog.com/2012/...-seo-urls.html

Ich kann doch auch in der index ein Abfrage machen ob eine Klasse existiert und wenn ja die Funktion aufrufen die aus der URL ensteht...

Oder soll eigentlich das der Router übernehmen? Und ich erstelle in der Index ein Router-Objekt? Dann ist der Router der Front-Controller? Oder?
Mit Zitat antworten
  #16  
Alt 17.11.2016, 19:15:18
fx1984 fx1984 ist offline
Anfänger
 
Registriert seit: Nov 2016
Alter: 39
Beiträge: 20
AW: Klassenfunktion aus Formular aufrufen?

Also... ich habe jetzt eine Router-Klasse die so aussieht:

Code:
<?php
	
	class Router {

		private $url;
		private $classname;
		private $functionname;


		function __construct($url){
			$this->getURL($url);
			$this->getclassname();
			$this->getfunction();
		}

		//trim(strtolower($_SERVER['REQUEST_URI']), '/');
		public function showURL() {
			echo $this->url;
		}

		public function showclass() {
			echo $this->classname;
		}

		public function showfunction() {
			echo $this->functionname;
		}

		private function getfunction() {
			$precna = explode('/', $this->url);
			$this->functionname = $precna[1];
		}

		private function getURL($url){
			$this->url = $url;

			return $this->trimURL();
		}

		private function getclassname() {
			$precna = explode('/', $this->url);
			$this->classname = $precna[0];
		}

		private function trimURL(){
			return $this->url = trim(strtolower($this->url),'/');
		}

		public function run(){
			if(class_exists($this->classname)){
				$controller = new $this->classname;
				if(method_exists($controller, $this->functionname)){
					$fn = $this->functionname;
					$controller->$fn.'()';
				} else {
					echo "function not found";
				}
			} else {
				$controller = new Controller();
				$controller->display();
			}
		}

	}
?>
Aber ich komme bei der fettmarkierten Zeile nicht weiter...

und ich habe eine idex die so aussieht:

Code:
<?php
	include('classes/controller.php');
	include('classes/model.php');
	include('classes/view.php');
	include('core/router.php');

	$url = $_SERVER['REQUEST_URI'];

	$router = new Router($url);
	$router->run();

?>
und die default.php die aufgerufen wird wenn kein Controller gefunden werden konnte sieht so aus:

Code:
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<link rel="stylesheet" type="text/css" href="templates/style.css">
	<title>Test</title>
</head>
<body>
	<header>
		<h1>Test</h1>
		<hr />
	</header>
	<nav>
		<form action"controller/login" method="post">
			<label>Benutzername</label>
			<input type="text" name="bname">
			<label>Passwort</label>
			<input type="password" name="bpassw">
			<button type="submit">login</button>
		</form>
	</nav>
	<section></section>
	<footer></footer>
</body>
</html>
Ich weiss nicht wie ich den String in $classname hinter den "new" Aufruf bekomme und dann das Selbe mit der Funktion hinter dem ->

und was ich in das action von dem Formular schreiben muss. Vor allem weiss ich noch nicht wie ich das hinbekomme dass das was in action steht in der url landet... bitte um hilfe :)

Geändert von fx1984 (17.11.2016 um 19:33:19 Uhr)
Mit Zitat antworten
  #17  
Alt 17.11.2016, 19:40:36
fx1984 fx1984 ist offline
Anfänger
 
Registriert seit: Nov 2016
Alter: 39
Beiträge: 20
AW: Klassenfunktion aus Formular aufrufen?

Vielleicht so:

Code:
		public function run(){
			if(class_exists($this->classname)){
				$controller = new $this->classname;
				if(method_exists($controller, $this->functionname)){
					$fn = $this->functionname . '()';
					$controller->$fn;
				} else {
					echo "function not found";
				}
			} else {
				$controller = new Controller();
				$controller->display();
			}
		}
? Vorher muss die URL als letzte zwei Einträge in der Form haben controller/funktion... geht sowas über eine .htaccess Datei?
Mit Zitat antworten
  #18  
Alt 17.11.2016, 19:58:38
fx1984 fx1984 ist offline
Anfänger
 
Registriert seit: Nov 2016
Alter: 39
Beiträge: 20
AW: Klassenfunktion aus Formular aufrufen?

Ich habs:

Code:
<?php
	
	class Router {

		private $url;
		private $classname;
		private $functionname;


		function __construct($url){
			$this->getURL($url);
			$this->getclassname();
			$this->getfunction();
		}

		//trim(strtolower($_SERVER['REQUEST_URI']), '/');
		public function showURL() {
			echo $this->url;
		}

		public function showclass() {
			echo $this->classname;
		}

		public function showfunction() {
			echo $this->functionname;
		}

		private function getfunction() {
			$precna = explode('/', $this->url);
			$this->functionname = $precna[3];
		}

		private function getURL($url){
			$this->url = $url;

			return $this->trimURL();
		}

		private function getclassname() {
			$precna = explode('/', $this->url);
			$this->classname = $precna[2];
		}

		private function trimURL(){
			return $this->url = trim(strtolower($this->url),'/');
		}

		public function run(){
			if(class_exists($this->classname)){
				$controller = new $this->classname;
				if(method_exists($controller, $this->functionname)){
					$fn = $this->functionname;
					$controller->$fn();
				} else {
					echo "function not found";
				}
			} else {
				$controller = new Controller();
				$controller->display();
			}
		}

	}
?>
Wenn http://localhost/pdir/p01/controller/login in der URL steht geht das... aber was steht jetzt im action attribut? und ich habe eine .htaccess datei

Code:
RewriteEngine On
RewriteBase /pdir/p01/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L,QSA]
Wobei ich nicht so richtig weiss was in Base reinkommt...
Mit Zitat antworten
  #19  
Alt 17.11.2016, 21:53:14
fx1984 fx1984 ist offline
Anfänger
 
Registriert seit: Nov 2016
Alter: 39
Beiträge: 20
AW: Klassenfunktion aus Formular aufrufen?

So gehts:

Code:
		<form action="controller/login" method="post">
			<label>Benutzername</label>
			<input type="text" name="bname">
			<label>Passwort</label>
			<input type="password" name="bpassw">
			<button type="submit">login</button>
		</form>
aber jetzt würde ich gerne das in der Adresszeile im Browser die URL index.php/controller/function steht...
Mit Zitat antworten
  #20  
Alt 18.11.2016, 14:46:32
chorn chorn ist offline
Junior Member
 
Registriert seit: Apr 2016
Alter: 44
Beiträge: 171
AW: Klassenfunktion aus Formular aufrufen?

Dann schreib in die action halt ="index.php/controller/function" rein, musst du in deinem Router dann halt rausfiltern, oder startest bei [1], aber dann kannst du dir das rumgehampel mit htaccess auch sparen und einfach alles auf index.php?path=controller/action oder so leiten.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Formular n-mal aufrufen Eibenger PHP Grundlagen 4 26.01.2012 14:05:51
Simple formular() aufrufen. peterfox78 PHP Grundlagen 8 05.01.2011 15:28:39
mittels Formular 2 Skripte aufrufen Tim PHP Grundlagen 2 21.06.2003 17:11:57
nach versenden eines Formular, neue HTML-Seite aufrufen! Twolf PHP für Fortgeschrittene und Experten 1 09.04.2002 13:19:14
PHP-Script im Formular per Button aufrufen StephanS PHP für Fortgeschrittene und Experten 1 13.02.2002 11:17:32


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:02:07 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt