php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.11.2006, 09:08  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard superglobals für meinen fall perfekt, aber falsche anzeige?

zum umschalten der sprachen in meinem cms hab ich folgenden code:
PHP-Code:
<?php
$languages 
= array('deutsch' => 'de',
                   
'english' => 'en');

foreach(
$languages as $name => $id) {
  echo 
pd_draw_imagelink(SITE_INDEX_FILE.'?cont='.$cont.'&lang='.$idDIR_WS_BUTTONS.'button_flag_'.$id.'.gif'ucfirst($name), ucfirst($name)).pd_draw_spacer(1,5);
}
?>
pd_draw_imagelink gibt einen link (mit title target class usw.) aus, SITE_INDEX_FILE ist das indexfile des cms, $cont der aktuelle content und eben $lang die sprache.

mein problem ist nun:
wenn ich mal mehr variablen per url übergebe (im content als subcontent usw.) dann wird beim umschalten auf eine andere sprache immer nur der $cont berücksichtigt.

ich dachte nun ich löse das ganze elegant indem ich $_SERVER['REQUEST_URI'] verwende, jedoch gibt mir das bei beispielsweise folgender uri: folgende ausgabe:
wie kommt das dass er 2x ein ? ausgibt?
__________________
mfg Alexander Haim
Promaetheus ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.11.2006, 10:56  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hugh?

PHP-Code:
<?php
$aGET 
$_GET// superglobals should be readonly
$aGET['cont'] = $cont;
$aGET['lang'] = $lang;
echo 
pd_draw_imagelink(SITE_INDEX_FILE.'?'.http_build_query($aGET), DIR_WS_ ...
?>
http_build_query() gibt es seit PHP5, eine PHP4-Version findest du unter den User-Notes:
http://de2.php.net/http_build_query

Noch ein Tipp zu ucfirst(). Schreib die Bezeichnung lieber korrekt in den Array. Falls du sie mal kleingeschrieben brauchst, reicht strtolower(). Es könnte schließlich auch längere Beschreibungen geben, als nur ein Wort und dann bräuchtest du schon einen intelligenteren Algorithmus als ucfirst.
ucwords o.ä. aber was würde aus us-amerikanisch => Us-amerikanisch bzw. Us-Amerikanisch, irgendwie beides nicht so prickelnd. War aber nur ein Beispiel, english hast du ja schon. Es ist aber nun mal einfacher einen formatierten Text automatisiert unformatiert darzustellen als umgekehrt.
Zergling-new ist offline  
Alt 07.11.2006, 11:18  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

danke für die info. hatte da wohl viel zu umständlich gedacht. das mit alle variablen in einen array zu packen ist eine gute idee, allerdings hatte ich mir da gedacht das wäre zu unsicher weil dann ja jeder nochwas in die url packen kann. muss ich halt noch eine verification zusätzlich machen. das mit der gross-und kleinschreibung ist auch ein guter tipp. werde ich machen.

eine frage noch bitte weil du ja hier der absolute profi bist. ich idiot hab mein cms jetzt so geschrieben dass es unter safe_mode = on nicht läuft (safe mode restriction) weil er mich da keine ordner erstellen lässt. muss ich jetzt echt alles umprogrammieren und mit ftp-funktionen erledigen oder hab ich eine möglichkeit (ausser beim provider zu betteln. )?
mist... an alles hatte ich gedacht. schön sauber für register_globals = off und jetzt das.
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 07.11.2006, 12:45  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Für was brauchst du denn die Ordner? Kannst du das nicht dynamischer lösen?

Zitat:
allerdings hatte ich mir da gedacht das wäre zu unsicher weil dann ja jeder nochwas in die url packen kann
Das ist bei GET nunmal so. Aber das braucht dich ja nicht zu stören, wenn er foo=bar übergibt ignoriert das dein Skript doch sowieso, also hat er keinen Mehrwert.
Zergling-new ist offline  
Alt 07.11.2006, 12:57  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

stimmt. leider kann ich das mit den ordner nicht anders lösen. habe schon viel darüber nachgedacht. ist es eine unsaubere lösung wenn ich das ganze jetzt mit ftp-funktionen mache?

habe mal wo gelesen "wenn ein script mit safe_mode = on nicht korrekt läuft ist es ein schlechtes script". jedoch wenn man definitiv ordner braucht, wie soll das dann sonst gehen?

in meinem beispiel: es werden ordner für jedes produkt angelegt. das hat den hintergrund dass für die produkte auch noch downloads, videos und pdf´s angeboten werden die vom admin per ftp hochgeladen werden:
produkte
-produkt 1
- downloads
- videos
- pdf
- produkt 2
- downloads
- videos
- pdf
ich wollte das lösen indem ich einfach generell einen ordner downloads, videos und pdf mache, denn der rest ist/wäre ja durch den scriptupload und datenbankeintrag schön gespeichert (was zu wem gehört).

ABER: der admin muss manche sachen per ftp hochladen, da die dinger zu gross sind (10mb-15mb) um mittels webformular hochgeladen zu werden. und so möchte er eine schöne übersicht haben wo was reinkommt.

ich weiss... es ist eine ganz ganz schlechte lösung, aber in diesem falle geht es wohl nicht anders oder?
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 07.11.2006, 19:12  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Naja hier gibt es eben einen Widerspruch:
Safe-Mode soll eben eine Skript-Umgebung sicherer machen, in dem es bestimmte Manipulationen am Dateisystem verhindert.
Genau das möchtest du ja aber. Tja was jetzt?

a) Hoster anweisen, Safe-Mode abzuschalten (oder bist du garkein zahlender Kunde mit Rechten? Dann musst du eben mit schlechten Kompromissen leben)
b) Hoster wechseln (was spricht dagegen?)
c) keine Dateisystem-Manipulationen vornehmen
d) Safe-Mode+Hoster verarschen und FTP benutzen

Warum du auf das Erstellen von Ordnern angewiesen bist, kann ich trotzdem nicht nachvollziehen. Mittels ModRewrite kannst du sogar dem Web-Anwender vorgaukeln, es gebe Projekt-Ordner.
Dem Admin brauch man es doch selten Recht machen, ob er es ins Verzeichnis A oder B schiebt ist für mich kein Argument, ein Skript mittels FTP-Funktionen potenziell unsicher zu machen.

Lege eben einen Upload-Ordner fest, dessen Inhalt eine Verwaltungs-Seite ausliest, mit der Option der Datei ein Produkt oder was auch immer zuzuordnen. Danach wird die Datei verschoben und der Upload-Ordner ist wieder leer. Jetzt ist sogar der Admin glücklich.

Übrigens soll Safe-Mode bei PHP6 wohl rausfliegen, so ganz genial ist dieser Modus nämlich auch nicht. Das haben sogar die Entwickler eingesehen.
Zergling-new ist offline  
Alt 07.11.2006, 19:55  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

danke für die hinweise.

ad a: hoster wurde angewiesen, er war aber sogar recht nett und hatte gesagt: "wenn es möglich wäre würde es ihn freuen wenn ich das mit den ftp funktionen machen würde, denn sonst müsste er einen developer account anlegen und die ganzen daten auf einen anderen server spielen. zumindest freundlich ist er.

ad b: spricht nichts dagegen. bis auf dass der kollege von mir (für den die seite ist) alle seine seiten bei dem hoster hat, und dieser auch recht freundlich und kompetent, vor allem aber zuverlässig ist.

ad c: stimmt. mir war aber leider keine lösung bekannt mit der ich diese tatsache umgehen könnte.

ad d: hat ja wie bereits erwähnt sogar der provider vorgeschlagen: www.stuon.com

ich weiss dass man es dem admin normalerweise nicht recht machen muss. es ist folgendermassen: dieser jenige welcher ist leider nicht wirklich kompetent am pc sektor. er ist einer derer die meinen ein pc muss eh alles von allein können, weils ja schliesslich ein pc ist. und so auch die website. er meint das aber nicht böse, deshalb programmiere ich ihm alles so einfach und klar für ihn wie nur möglich. ist ja auch eine herausforderung für mich.

hm... das mit dem uploadordner ist eine gute idee. verwaltungsseite... sprich eine seite mit der ich dann die upgeloadeten dateien zuordnen (datenbank) und verschieben kann. das ist eine gute idee.

Zitat:
Zitat von Zergling
Übrigens soll Safe-Mode bei PHP6 wohl rausfliegen, so ganz genial ist dieser Modus nämlich auch nicht. Das haben sogar die Entwickler eingesehen.
da bin ich aber froh.

eine letzte sache zur erklärung. nicht damit du denkst ich spinne:
der kollege vertreibt rc hubschrauber. er möchte produkte anlegen, welche wie gesagt in der detailansicht unten alle zusätzlichen dateimöglichkeiten (video, download, pdf´s) anzeigt. die dateien sind aber häufig sehr gross, oft sogar über 20mb, deshalb dachte ich mir es wäre die beste lösung einfach einen ordner für jedes produkt zu erstellen und die diversen dateien dorthin laden zu lassen.

das mit der verwaltungsseite ist aber wirklich eine absolut geniale idee. vor allem muss ich/er dann von mehreren produkten benutzte dateien nicht separat uploaden. du meinst einen ordner upload in den er alles raufladet und dann mit der verwaltungsseite den produkten zuordnet und zugleich verschiebt? ich werde da aber genauso wieder das problem mit copy() bekommen UND es wird doch auch ewig dauern bis das file kopiert ist und das script timeouted oder?
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 07.11.2006, 20:16  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich weiß garnicht, was Safe-Mode alles beeinflußt. Informier dich natürlich vorher, ob PHP Schreibrechte für Dateien besitzt (einfach ausprobieren). Wenn nicht wirds in der Tat schwierig. Eventuell wäre es besser, wenn der Hoster wirklich das Safe-Mode entfernt (Developer-Account). Bring halt in Erfahrung was es ihn an Zeit kostet und setz das in Relation zu der Zeit, die du zur Implementierung einer anderen Lösung bräuchtest.

Kopieren bzw. verschieben (rename) dauert aber nicht lange, wie halt hier auf einem System auch von Ordner A zu Ordner B. Ein paar Sekunden höchstens, 20 MB sind ja aber für ein BS heutzutage nichts mehr. Das kopiert mein USB-Stick in ner Sekunde.
Zergling-new ist offline  
Alt 07.11.2006, 22:08  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

hmm, ich steh auch grade mit safe mode auf kriegsfuß. is ja gut gemeint, aber wenn ich mit meinem script nicht mal in den ordner schreiben kann, den das selbe script zuvor erstellt hat ist das echt totaler mist.
nikosch ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sichere superglobal, php superglobale variable, php ucwords \nur ein wort\

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:28 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.