Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

php script groß und kleinschreibung





Frage

Hallo, habe folgendes Problem: Ich habe ein kleines script geschrieben, das wenn man eine Subdomain einer domain anwählt den besucher zu einem unterordner weiterleitet. zB: peter.domain.com dann gelangt der besucher zu domain.com/peter/. Das klapp auch wunderbar - doch leider bin ich nicht in der lage großbuchstaben in die Ordner zu schreiben: zB Peter.domain.com wird immer zu domain.com/peter/ weitergeleitet. Kann ich das Problem beheben? Bin nicht so wirklich fit im bereich type usw... -------------------------------------------------------------------- Auszug aus dem Script: $full_url = $_SERVER[´HTTP_HOST´]; $subdomain = ""; for ($i = 0; $i <= strlen($full_url); $i++) { $dummy = substr($full_url,$i, 1); if ($dummy == ".") { break; } $subdomain = $subdomain.$dummy; } if (($subdomain != "www")) [...] -> nur if schleife und fals es den ordner nicht gibt eine umleitung.... ------------------------------------------------------------------------ Danke für eure Ideen/hilfe gruß

Antwort 1 von Nessus

Hi,

schaue Dir mal folgende Funktion an:
http://de3.php.net/manual/de/function.strtolower.php

Nessus

Antwort 2 von Harald_S

Hmm,
leider ist
strtolower()

nicht ganz das richtige. Es würde doch einfach nur die Variable $subdoman in klein buchstaben umwandeln. Genau das ist ja das problem, dass substr() wohl nur kleinbuchstaben weitergibt...



Das oben genannte beispiel war wohl auch nicht so das beste um den ersten Buchstaben eines strings groß zu bekommen gibt es glaube ich auch ne Funktion, sowas wie ucfirst().

Aber ich möchte das die Subdomain genauso wie sie geschrieben ist gespeichert wird.
Egal ob es Peter.domain.com oder peter.domain.com oder pEtEr.domain.com heißt. Alle 3 Domains müssten zu unterschiedlichen Ordnern weitergeleitet werden können...

Antwort 3 von Rhamdini

Hallo!

Eigentlich verändert substr() die Groß-/Kleinschreibung nicht. Hast Du Dir schonmal den Output der Servervariablen ausgeben lassen? Vielleicht liegt ja da der Hund begraben.

Gruss Rhamdini

PS:
Übrigens mit
$e=explode(".",$full_url);
$subdomain=$e[0];
geht das Ganze eleganter ..

Antwort 4 von Harals_S

Jepp, da "liegt der Hund begraben"!

Das mir das nicht früher aufgefallen ist...
Wie kann ich das ändern?

Antwort 5 von Rhamdini

Ich glaube die (potentielle) Unterscheidung von Groß- und Kleinschreibung bei Webadressen beginnt erst rechts von der Domain, also beim ersten Ordner.

Gruss Rhamdini

Antwort 6 von Harald_S

Hmm, das wußte ich nicht...
bis du dir da sicher?

Ich arbeite ab und zu mit confixx dort werden auch nur kleingeschriebene Subdomains erlaubt.
Falls es wirklich so sein sollte brauche ich eine funktion die unter Javascript überprüft, ob in dem Feld großbuchstaben vorkommen.

Sowas wie:
var ch = 1;
for(i=0;i<document.form.usr.value.length;++i)
if(document.form.usr.value.charAt(i) < "a"
|| document.form.usr.value.charAt(i) > "z"
|| document.form.usr.value.charAt(i) <> " " )
ch = -1;
if(ch == -1) {
alert("Usr darf keine Großbuchstaben und Leerzeichen besitzen!");
document.form.plz.focus();
return false;


leider funktioniert das nicht.
Weiß einer eine stelle wo ich das herunter laden kann?

Antwort 7 von Rhamdini

Zitat:
bis du dir da sicher?

Nein, nur bei Domains. Bei Subdomains ist es lediglich eine Vermutung.

Daß Javascript nur bestimmte Zeichen zuläßt müßte man mit regulären Ausdrücken hinbekommen:
http://de.selfhtml.org/javascript/objekte/string.htm#search

Generell haben Javascriptprüfungen aber den Nachteil, daß man sie umgehen kann!

Gruss Rhamdini

Antwort 8 von Harald_s

Ja Hallo danke für deine bisherige hilfe....
habe also die javascript version verworfen.
Hast ja recht mit der sicherheit!

Habe mich jetzt an PHP versucht, mit dem ich mich eigentlich sowieso besser auskenne, nur leider bin ich auch einen Fehler gestoßen der mich verwirrt.

ich habe also ein Formular und möchte da ein feld überprüfen. Er Überprüft das Feld auch doch er unterscheidet nicht zwischen klein und Großbuchstaben??!!??

Hier die Überprüfung:
if ($action=´sende´){
if(!eregi("^([a-z0-9\_]|[[:space:]])*$", $eingabe))
{ echo "keine richtige eingabe!";


}else{echo"richtig!";}
}

Ich weiß auch nicht woran es liegt normalerweise müßte ich in die eregi()-Funktion A-Z rein schreiben, damit er die zuläßt oder?

Antwort 9 von Rhamdini

Sorry, aber mit regulären Audrücken kenne ich mich kaum aus. Ich würde es so machen:
if(strtolower($eingabe)<>$eingabe) ..

Gruss Rhamdini

Antwort 10 von Rhamdini

Zusatz:
Natürlich darf in Eingabe nur die Domain stehen. Ggfs. den Rest vorher abtrennen:
http://selfphp.de/funktionsreferenz/url_funktionen/parse_url.php

Antwort 11 von Harald_S

Ich glaube du hast mich eben nicht ganz verstanden oder ich verstehe dich nicht richtig.
Es geht mir darum, dass wenn ich keine großgeschriebenen Subdomains erzeugen/verwenden kann muß ich den Leuten den ich die Subdomain zur verfügung stellen möchte verbieten Großbuchstaben zu verwenden.

ich habe also folgendes geschrieben:


schript(test.php):

<?
if ($action=´sende´){
if(!eregi("^([a-z0-9\_]|[[:space:]])*$", $eingabe))
{ echo "keine richtige eingabe!";


}else{echo"richtig!";}
}
?>



<form name="form" action="test.php?action=sende" method="post">
Bitte geben Sie nur kleine buchstaben ein:
<input type="text" size="10" name="eingabe">
<br><input type="submit" value="Abschicken">
</form>



eigentlich sehr leicht, doch man kann immernoch Großbuchstaben eingeben(und es kommt keine Fehlermeldung).
Das vestehe ich nicht. Man müßte doch A-Z oben eintragen damit man auch Großbuchstaben eingeben kann...

Grml... das so ein Problem mich aufhällt----

Antwort 12 von Rhamdini

Ich glaube, wir meinen Dasselbe! Ich würde mit parse_url den host-Teil der Adresse isolieren und dann fragen, ob sich dieser verändert, wenn man die Funktion strtolower() auf ihn anwendet. Denn diese Funktion verändert ja nur Strings, die Großbuchstaben beinhalten, indem diese durch entsprechende Kleinbuchstaben ersetzt werden. Ein String, der nur Kleinbuchstaben, Zahlen, Punkte oder Bindestriche enthält, bleibt dadurch unverändert. Daran kann man indirekt erkennen, ob er Großbuchstaben enthielt.

Antwort 13 von Harald_S

Ah hab es gerafft... das klappt sogar! Danke!!!!!!!!!!

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: