php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 20-07-2009, 15:44
sdvs
 Registrierter Benutzer
Links : Onlinestatus : sdvs ist offline
Registriert seit: Jun 2009
Beiträge: 39
sdvs befindet sich auf einem aufstrebenden Ast
Standard Variable vergleichen

Hallo an alle

ich habe ein kleines Problem und komme damit nicht weiter!

Folgendes:
ich möchte gerne eine Variable vergleichen und prüfen, ob es auch die richtige ist, wenn nicht, dann soll eine Fehlerseite geladen werden!

Dies ist meine bisherige Überprüfung:

PHP-Code:
if (isset($_GET['Seite']) &&
    
is_string($_GET['Seite'])) {
  
$site $_GET['Seite'];}
else {
  
$site 'Startseite'
Hier ist das Problem, dass erstmal nur überprüft wird, ob die Variable "Seite" da ist, wenn ja welchen Wert hat sie, diesen Wert dann $site zuordnen und demendsprechenden Content laden, ist die Variable Seite nicht angegeben, dann ordne der Variable $site den Wert Startseite zu.

Ist jetzt die Variable falsch, z.B. Seite = Seiteee, dann ornde der Variable $site wieder den Wert "Startseite" zu.. Ist ja so auch richtig (laut Code)..

Aber ich möcht folgende Überprüfung:
wenn Seite != Seite oder Seite nicht vorhanden, dann ordne der Varaiable $site den Wert "pagenorfound" zu

wenn Seite vorhanden, dann ordne den Wert von Seite der Variable $site zu...

Ich hoffe ihr könnt mir helfen!
Mit Zitat antworten
  #2 (permalink)  
Alt 20-07-2009, 16:34
phpMorpheus2
 Registrierter Benutzer
Links : Onlinestatus : phpMorpheus2 ist offline
Registriert seit: Apr 2007
Beiträge: 646
Blog-Einträge: 2
phpMorpheus2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich habe dafür z.B. die Klasse als Beispiel:

PHP-Code:
class view {

    public 
$path        =    'templates';
    public 
$template;

    public function 
setTemplate($template) {
        
$this->template $template;
    }

    public function 
loadTemplate(){
        
$file    =    $this->path."\\tmpl.".$this->template.".php";
        
$exists    =    file_exists($file);

        if (
$exists === true){
            include(
$file);
        } else {
            
$this->template 'tmpl.default';
            
$file    =    $this->path."\\".$this->template.".php";
            include(
$file);
        }
    }

Mit Zitat antworten
  #3 (permalink)  
Alt 20-07-2009, 17:18
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sdvs Beitrag anzeigen
Hier ist das Problem, dass erstmal nur überprüft wird, ob die Variable "Seite" da ist, wenn ja welchen Wert hat sie
Nein, der Wert wird nicht geprüft, höchstens welchen Typ der Wert hat - und das ist überflüssig, denn GET/POST/COOKIE liefern immer Strings.

Zitat:
Aber ich möcht folgende Überprüfung:
wenn Seite != Seite oder Seite nicht vorhanden, dann ordne der Varaiable $site den Wert "pagenorfound" zu

wenn Seite vorhanden, dann ordne den Wert von Seite der Variable $site zu...
Dann müsstest du erst mal definieren, wann ein Wert als "vorhanden" gelten soll.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #4 (permalink)  
Alt 20-07-2009, 17:55
sdvs
 Registrierter Benutzer
Links : Onlinestatus : sdvs ist offline
Registriert seit: Jun 2009
Beiträge: 39
sdvs befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wahsaga Beitrag anzeigen
Dann müsstest du erst mal definieren, wann ein Wert als "vorhanden" gelten soll.

ein Wert soll als vorhanden gelten, wenn ein String, egal welcher, in der Variable steckt.

Denn steckt keiner drin, dann wird der String "Startseite" zugewiesen!

Ist aber die ganze Variable falsch, dann wird ebenfalls "Startseite" zugewiesen!

Ich habe das absichtlich so geschrieben, dann mann könnte auch im else zweig angeben "pagenotfound" dann würde aber bei dem Aufruf der Seite ohne Variable ebenfalls die Seite pagenotfound aufgerufen werden.

deshalb soll geprüft werden, ob die Seite mit options oder Variablen aufgerufen werden oder ohne...

funktion:
wenn Seite nicht = Seite, dann pagenotfound

sollte aber die Webseite ohne Parameter aufgerufen werden, dann soll der Wert Startseite zugeordnet werden.



Bisher hatte ich immer folgendes:
1. Webseite hatte falsche Variable, dann Startseite (nicht gewünscht)
2. Webseite hatte richtige Variable, nur falschen Wert, dann pagenotfound (klappt schon)

Ich habe den else zweig dann mal umgeschrieben und den Wert "pagenotfound" reingeschrieben, hatte zur Folge, dass bei einem Aufruf der Webseite ohne Parameter die pagenotfound geladen wurde, ist ja auch verständlich!

Ich möchte nun einfach überprüfen, ob die Varaiable wirklich Seite ist oder nicht, wenn sie es nicht ist, dann pagenotfound, egal welcher Wert drin steckt..

Problem ist, dass ich auch nicht einfach eine Abfrage starten kann, ob Seite = Seite ist, denn wird die Seite ohne Parameter aufgerufen, dann würde ja wieder pagenotfound als Wert gelierfert werden...
Mit Zitat antworten
  #5 (permalink)  
Alt 20-07-2009, 18:09
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sdvs Beitrag anzeigen
ein Wert soll als vorhanden gelten, wenn ein String, egal welcher, in der Variable steckt.
Dazu reicht eigentlich empty bereits aus.

Zitat:
Denn steckt keiner drin, dann wird der String "Startseite" zugewiesen!
Noch mal, es gibt an dieser Stelle (wenn) nur Werte vom Typ STRING.

Zitat:
Ist aber die ganze Variable falsch, dann wird ebenfalls "Startseite" zugewiesen!
Mit "falsch" meinst du also gar nicht gesetzt, undefiniert?
Bitte drücke dich so präzise wie möglich aus, das ist an der Stelle absolut erforderlich.

Zitat:
Ich habe das absichtlich so geschrieben, dann mann könnte auch im else zweig angeben "pagenotfound" dann würde aber bei dem Aufruf der Seite ohne Variable ebenfalls die Seite pagenotfound aufgerufen werden.
Na dann könnte man auf isset zurückgreifen für die erste Prüfung, ob überhaupt ein Parameter übergeben wurde, und dann empty nachschieben.

Zitat:
funktion:
wenn Seite nicht = Seite, dann pagenotfound
Das ist wieder zu unpräzise - was soll "Seite nicht = Seite" ausdrücken?

Zitat:
Bisher hatte ich immer folgendes:
1. Webseite hatte falsche Variable, dann Startseite (nicht gewünscht)
2. Webseite hatte richtige Variable, nur falschen Wert, dann pagenotfound (klappt schon)
Was du als "falsche Variable" ansiehst, hast du immer noch nicht klar definiert.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #6 (permalink)  
Alt 20-07-2009, 18:12
sdvs
 Registrierter Benutzer
Links : Onlinestatus : sdvs ist offline
Registriert seit: Jun 2009
Beiträge: 39
sdvs befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wahsaga Beitrag anzeigen
Dazu reicht eigentlich empty bereits aus.


Noch mal, es gibt an dieser Stelle (wenn) nur Werte vom Typ STRING.


Mit "falsch" meinst du also gar nicht gesetzt, undefiniert?
Bitte drücke dich so präzise wie möglich aus, das ist an der Stelle absolut erforderlich.


Na dann könnte man auf isset zurückgreifen für die erste Prüfung, ob überhaupt ein Parameter übergeben wurde, und dann empty nachschieben.


Das ist wieder zu unpräzise - was soll "Seite nicht = Seite" ausdrücken?


Was du als "falsche Variable" ansiehst, hast du immer noch nicht klar definiert.
richtige Variable = Seite
falsche Variable = Seiteeee

Seite != Seite soll ausdrücken, wenn die variable anstatt Seite Seiteee heißt, dann pagenotfound!

diese Überprüfung brauche ich.. Das der Wert in der Variable Seite ein String ist, habe ich bereits verstanden oder an welcher Stelle habe ich mich dies bezüglich falsch ausgedrückt

Geändert von sdvs (20-07-2009 um 18:18 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 20-07-2009, 19:14
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sdvs Beitrag anzeigen
richtige Variable = Seite
falsche Variable = Seiteeee

Seite != Seite soll ausdrücken, wenn die variable anstatt Seite Seiteee heißt, dann pagenotfound!
Wenn du nur auf einen Parameter namens Seite in deinem Script reagieren willst, dann sind Parameter mit irgendwelchen anderen Namen doch sowieso uninteressant.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #8 (permalink)  
Alt 20-07-2009, 22:03
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von wahsaga Beitrag anzeigen
Dazu reicht eigentlich empty bereits aus.
In den allermeisten Fällen. Man nehme aber an, der String '0' könnte einen Wahrheitswert jenseits von FALSE darstellen, dann fällt man mit empty($_GET['examplevalue']) auf die Nase.
Mit Zitat antworten
  #9 (permalink)  
Alt 20-07-2009, 22:38
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

In $_GET Values wirst du immer nur Strings finden, ohne Ausnahme.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #10 (permalink)  
Alt 21-07-2009, 11:01
sdvs
 Registrierter Benutzer
Links : Onlinestatus : sdvs ist offline
Registriert seit: Jun 2009
Beiträge: 39
sdvs befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wahsaga Beitrag anzeigen
Wenn du nur auf einen Parameter namens Seite in deinem Script reagieren willst, dann sind Parameter mit irgendwelchen anderen Namen doch sowieso uninteressant.
Normalerweise sollte das so sein... Mein Problem ist aber, dass die variable geändert wurde von site auf seite.. Jetzt hat google die alten urls mit site indexiert und verweist mit alten nicht mehr vorhandenen urls mit der variable site immer auf die startseite..

jetzt möcht ich, dass bei einer falschen variable (genau wie bei einem falschen string in der variable) den wert pagenotfound zuordnen, dazu muss ich aber irgendwie vergleichen, ob das die variable ist, die ich haben will oder nicht!
wenn der wert falsch ist, dann wird schon die pagenotfound geladen.. ist aber jedoch die variable falsch, dann wirdt anstatt pagenotfound startseite der wert in der variable..

ist ja auch verständlich mehr macht die funktion ja nicht, sie soll jetzt erweitert werden um die funktion, dass überprüft wird, ob die variable richtig ist..
ob das überhaupt möglich ist weiß ich nicht, deshalb frage ich euch profis ja!
Mit Zitat antworten
  #11 (permalink)  
Alt 21-07-2009, 13:00
piratos
 Guest
piratos
Beiträge: n/a
Standard

PHP-Code:
$site = isset($_GET['Seite']) && !is_numeric($_GET['Seite']) ? $_GET['Seite'] :'Startsite'
Mit Zitat antworten
  #12 (permalink)  
Alt 21-07-2009, 13:10
piratos
 Guest
piratos
Beiträge: n/a
Standard

Wenn du nur sicher sein willst dss Seite nicht leer ist dann lieber das:

PHP-Code:
$site = isset($_GET['Seite']) && $_GET['Seite']<>'' $_GET['Seite'] :'Startseite'
Mit Zitat antworten
  #13 (permalink)  
Alt 21-07-2009, 13:36
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von sdvs Beitrag anzeigen
Normalerweise sollte das so sein... Mein Problem ist aber, dass die variable geändert wurde von site auf seite.. Jetzt hat google die alten urls mit site indexiert und verweist mit alten nicht mehr vorhandenen urls mit der variable site immer auf die startseite..

jetzt möcht ich, dass bei einer falschen variable (genau wie bei einem falschen string in der variable) den wert pagenotfound zuordnen, dazu muss ich aber irgendwie vergleichen, ob das die variable ist, die ich haben will oder nicht!
wenn der wert falsch ist, dann wird schon die pagenotfound geladen.. ist aber jedoch die variable falsch, dann wirdt anstatt pagenotfound startseite der wert in der variable..
PHP-Code:
$allowed_parameters = array (
    
'site''Seite',
);
$page 'Startseite'// Default-Wert
foreach ($allowed_parameters as $parameter) {
    if (
        isset(
$_GET[$parameter]) && // nur, wenns den Parameter gibt und 
        
isset($_GET[$parameter][0])  // er nicht leer ist
    
) {
      
$page $_GET[$parameter];
      break;
    }
}
// ab hier hat $page entweder den voreingestellten Wert
// oder den Wert, der per GET übergeben wurde 
Entschuldige bitte, dass ich $page statt des von dir benutzten $site verwendet habe, aber dieser Name erschien mir logischer.

Zitat:
Zitat von combie Beitrag anzeigen
In $_GET Values wirst du immer nur Strings finden, ohne Ausnahme.
Fall sich das auf ...

Zitat:
Zitat von fireweasel Beitrag anzeigen
In den allermeisten Fällen. Man nehme aber an, der String '0' könnte einen Wahrheitswert jenseits von FALSE darstellen, dann fällt man mit empty($_GET['examplevalue']) auf die Nase.
... bezog:

Eben! Und weil empty() den String '0' als FALSE bewertet[1] (und TRUE zurückgibt), genauso wie bei einem leeren String '' oder gar keinem Wert, vermeide ich es, empty() zur Auswertung von Strings heranzuziehen. Es gibt bessere Alternativen wie
strlen($string), isset($string[0]) usw.

Bei allen anderen Datentypen stellt das kein Problem dar.

--
[1] empty($var) ist das Gleiche wie !((bool) $var) nur ohne Warnung, wenn die Variable nicht existiert.

Geändert von fireweasel (21-07-2009 um 13:57 Uhr) Grund: Ergänzt
Mit Zitat antworten
  #14 (permalink)  
Alt 21-07-2009, 14:11
sdvs
 Registrierter Benutzer
Links : Onlinestatus : sdvs ist offline
Registriert seit: Jun 2009
Beiträge: 39
sdvs befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen
PHP-Code:
$allowed_parameters = array (
    
'site''Seite',
);
$page 'Startseite'// Default-Wert
foreach ($allowed_parameters as $parameter) {
    if (
        isset(
$_GET[$parameter]) && // nur, wenns den Parameter gibt und 
        
isset($_GET[$parameter][0])  // er nicht leer ist
    
) {
      
$page $_GET[$parameter];
      break;
    }
}
// ab hier hat $page entweder den voreingestellten Wert
// oder den Wert, der per GET übergeben wurde 
Entschuldige bitte, dass ich $page statt des von dir benutzten $site verwendet habe, aber dieser Name erschien mir logischer.



Fall sich das auf ...



... bezog:

Eben! Und weil empty() den String '0' als FALSE bewertet[1] (und TRUE zurückgibt), genauso wie bei einem leeren String '' oder gar keinem Wert, vermeide ich es, empty() zur Auswertung von Strings heranzuziehen. Es gibt bessere Alternativen wie
strlen($string), isset($string[0]) usw.

Bei allen anderen Datentypen stellt das kein Problem dar.

--
[1] empty($var) ist das Gleiche wie !((bool) $var) nur ohne Warnung, wenn die Variable nicht existiert.
Danke für den Lösungsansatz.. aber selbst wenn ich site aus den erlaubten parametern rausnehme, dann habe ich nach wie vor das problem, dass auf startseite verwiesen wird, wenn site anstatt seite angegeben wird...

danke aber trotzdem!
Mit Zitat antworten
  #15 (permalink)  
Alt 21-07-2009, 14:24
sdvs
 Registrierter Benutzer
Links : Onlinestatus : sdvs ist offline
Registriert seit: Jun 2009
Beiträge: 39
sdvs befindet sich auf einem aufstrebenden Ast
Standard

entschuldige...

mitlerweile habe ich gesehen, dass sich schon etwas geändert hat! jetzt würde egal ob site oder Seite angegeben wird (insofern der Wert in der Variable stimmt) immer die richtige Seite angezeigt werden und wenn der Wert nicht stimmt, dann eben die pagenotfound..

wäre es möglich etwas einzusetzen, dass jede variable (ausser Seite) als falsch gewertet wird und dann sofort auf pagenotfound verwiesen wird?

die Lösung ist schon gut, danke dafür.. Ist jetzt nur rein interessehalber..

Also zusammengefasst:
Seite ohne parameter 'Startseite'
Seite mit parameter 'Seite' und richtigem String Content laden
Seite mit parameter 'Seite' und falschem String 'pagenotfound'

Seite mit falschem paramter zb seiteeeee und richtigem string 'pagenotfound'
Seite mit falschem Parameter und falschem String 'pagenotfound'


Vielen lieben Dank schonmal für eure Hilfen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SQL ergebnis mit variable vergleichen 5t6z7u SQL / Datenbanken 2 27-03-2006 20:08
Zeilen aus Txt-Datei mit Variable vergleichen - Problem putzlappen PHP Developer Forum 3 25-11-2005 22:43
Variable vergleichen und auf Seite weiterleiten Nicox PHP Developer Forum 4 08-01-2004 14:22
Variable mit Textdatei vergleichen Astrominus PHP Developer Forum 10 14-10-2002 16:29
Feld-Eintrag mit Variable vergleichen, wie geht das ? xxyyl SQL / Datenbanken 6 30-10-2001 19:32

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:18 Uhr.