Portal > Foren > PHP > PHP-Programmierung > Macht nach einem @ nicht weiter...
Antwort
 
Themen-Optionen
Alt 14.04.2007, 19:47 Nach oben    #1
Benutzer
 
Benutzerbild von if('Miikku' == $Name)
 
Registriert seit: 28.03.2007
Ort: Dollern
Beiträge: 26
Standard Macht nach einem @ nicht weiter...

Ich habe einen Script geschrieben ("Login.php"), in dem ich nicht weiß, ob "funktions.php" schon included ist oder nicht. Ich brauche "funktions.php" aber in dem Script.
Jetzt bekomme ich dauernd die Fehlermeldung, dass nen paar Funktionen schon definiert sind, wenn ich "funktions.php" include (und es das schon ist).
Andernfalls, (wenn ich "funktions.php" nicht include) bekomme ich die Fehlermeldung, dass ein paar Funktionen noch nicht definiert sind (wenn es auch vorher noch nicht included ist).

Ich hab' mir jetzt was dagegen ausgedacht!
"funktions.php":
PHP-Code:
function funktions_php()
{
    
$e 1;
    return 
$e;

"Login.php":
PHP-Code:
$e = @funktions_php();      //funktion evtl. mit Fehler(aber unterdrückt)
if($e)
{
    echo
"Ist schon Included!\n";
}
else
{
    echo
"Noch nicht included!\n";
    include 
"funktions.php";

So... Jetzt kommt's:
Es wird weder der "if"- noch der "else"-Teil ausgeführt!!!!!!!

Bitte helfen, ich check's nitt...
if('Miikku' == $Name) ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.04.2007, 19:54 Nach oben    #2
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Zitat:
Es wird weder der "if"- noch der "else"-Teil ausgeführt!!!!!!!
Ein Ausrufezeichen langt.

Das ist klar, dass das nicht funktioniert. Ein "@" unterdrückt nur Ferhlermeldungen - die Fehler treten aber natürlich dennoch auf. In deinem Fall wird ein Fatal Error auftreten, wenn die Funktion noch nicht existiert. Genau deshalb sollte man das "@" nicht benutzen.

In deinem Fall könntest du mit function_exists() prüfen, ob die gewünschte Funktion schon existiert, oder nicht.

Zitat:
Ich habe einen Script geschrieben ("Login.php"), in dem ich nicht weiß, ob "funktions.php" schon included ist oder nicht. Ich brauche "funktions.php" aber in dem Script.
Jetzt bekomme ich dauernd die Fehlermeldung, dass nen paar Funktionen schon definiert sind, wenn ich "funktions.php" include (und es das schon ist).
Andernfalls, (wenn ich "funktions.php" nicht include) bekomme ich die Fehlermeldung, dass ein paar Funktionen noch nicht definiert sind (wenn es auch vorher noch nicht included ist).
Du solltest Dir keine Umgehungslösungen schreiben, sondern lieber an einer besseren Struktur arbeiten, denn deine ist (nach deiner Beschreibung) nicht ganz funktionstüchtig.
__________________
http://www.ChrisDiary.De

Geändert von Chr!s (14.04.2007 um 19:56 Uhr).
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.04.2007, 20:05 Nach oben    #3
Benutzer
 
Benutzerbild von if('Miikku' == $Name)
 
Registriert seit: 28.03.2007
Ort: Dollern
Beiträge: 26
Standard

Zitat:
In deinem Fall wird ein Fatal Error auftreten, wenn die Funktion noch nicht existiert.
Stimmt...

Zitat:
In deinem Fall könntest du mit function_exists() prüfen, ob die gewünschte Funktion schon existiert, oder nicht.
Danke! Genau nach sowas hatte ich auchschon (erfolglos) gegoogelt und bei http://www.php-homepage.de/manual/ref.xmlrpc.php gesucht!

Zitat:
Du solltest Dir keine Umgehungslösungen schreiben, sondern lieber an einer besseren Struktur arbeiten, denn deine ist (nach deiner Beschreibung) nicht ganz funktionstüchtig.
Naja... kann schon sein, aber NUR daran liegt das nicht. Das liegt nämlich daran, dass ich (zum Testen) immer entweder direkt "Login.php" aufrufe, oder die Seite, in die "Login.php" included ist, in der ich "funktions.php" eben auch schon included habe...
if('Miikku' == $Name) ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.04.2007, 20:18 Nach oben    #4
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 426
Standard

was spricht eigentlich gegen include_once()?? ich benutzt das anstatt nur include()... Und da bekomme ich keine Fehlermeldung, wenn ich schon eine datei zwei mal eingebunden habe...
Xean ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.04.2007, 20:26 Nach oben    #5
Benutzer
 
Benutzerbild von if('Miikku' == $Name)
 
Registriert seit: 28.03.2007
Ort: Dollern
Beiträge: 26
Standard

Zitat:
was spricht eigentlich gegen include_once()?? ich benutzt das anstatt nur include()... Und da bekomme ich keine Fehlermeldung, wenn ich schon eine datei zwei mal eingebunden habe...
Hab' ich schonmal probiert gehabt (vor den Ferien) ich weiß aber nicht mehr, was dabei der Fehler war... (Ich bin grad erst aus den Ferien wiedergekommen, desshalb hab' ich noch das Problem)

Wodurch kann eigendlich:
Zitat:
Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /usr/export/www/vhosts/funnetwork/hosting/blablabla/funktions.php on line 160

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /usr/export/www/vhosts/funnetwork/hosting/blablabla/funktions.php on line 160
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
angezeigt werden?
if('Miikku' == $Name) ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.04.2007, 20:42 Nach oben    #6
Erfahrener Benutzer
 
Registriert seit: 12.06.2006
Beiträge: 199
Standard

Das kommt, weil keine Datenbankverbindung aufgebaut wurde. Evtl. ist die includete Datei nicht vorhanden?

Und nochwas: require() bzw require_once() hilft dir auch prima weiter .. der Vorteil bei den *_once()-Funktionen ist, dass Dateien nur eingebunden werden, wenn sie nicht schon eingebunden worden sind.

Und Unterschied zwischen require() und include() ist, bei include() wird bei Fehlfunktion (z.B. Datei nicht gefunden) nur eine Warnung ausgegeben. Bei require() wird die Ausführung des Scripts abgebrochen, wenn es eine Fehlfunktion gibt.

Du solltest dich noch genauer mit den Grundlagen von PHP beschäftigen, include()s etc. sowie Funktionsbehandlung (function_exists() etc.) sind elementare Einheiten von PHP (und den meisten Programmiersprachen). Es hilft oft die Manual einfach mal von vorne bis hinten durchzulesen (man muss nicht jede Erweiterung anschauen, es reichen DB-, XML- und ähnliche Erweiterungen).
FloB ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.04.2007, 15:50 Nach oben    #7
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Es macht Sinn, immer nur genau ein Eingangsskript für eine Webanwendung zu besitzen, da es ja immer Elemente gibt, die bei jedem Aufruf eingebunden oder abgearbeitet werden müssen. Ein erster konsequenter Schritt wäre dann bei jedem "Page Controller" (oder wie auch immer du solche Skripte, wie Login.php nennen magst) oben ein require 'setup.php' und unten ein require 'shutdown.php' oder so ähnlich einzubinden, damit Änderungen an den "globalen" Funktionen nicht überall von Hand eingetragen werden müssen (mit entsprechender Fehlerquote). Der nächste Schritt ist dann einfach, die Redundanz zu erkennen und den Spieß umzudrehen (also alle Anfragen auf ein Skript umzulenken, dass die Login.php etc. dann einbinden).

Basti
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


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

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:35 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44