URL auf HTTP/HTTPS prüfen

EuroCent

Klappstuhl 2.0
Wie kann ich beispielsweise überprüfen ob http oder https vorhanden ist...

Ich möchte URLs bei mir in mein System eintragen, jedoch möchte ich vorher abfragen beim Abschicken ob in der URL "http, https" wenn nein soll er Standard immer http davor setzen.

Sprich wenn jemand "google.de" eingibt soll es dann "http://google.de" werden.
Ansonsten wenn eines der Beiden vorhanden ist soll er die normal eintragen :)

Hoffe es findet sich eine Lösung :)

Dies führt nicht zum gewünschten ergebnis:
PHP:
$checkHTTP = preg_match("!^(http|https)+(://)+(www\.)?([a-z0-9\.-]{3,})\.[a-z]{2,4}(/)?$!i", $_POST['urlTest']);

Zumindestens weiß Ich nicht wie ich die IF-Abfrage bauen sollte damit er mir das richtige liefert oO
 
Hi

ganz ohne Regex:
PHP:
$checkHTTP = $_POST['urlTest'];  
if(!strpos($checkHTTP, '://'))
    $checkHTTP = 'http://' . $checkHTTP;
 
OMG warum bin ich nicht darauf gekommen xD
Manchmal ist das einfachste nicht auf dem ersten Blick ersichtlich :)

Ich werd das gleich mal prüfen und schauen :)

PS: Wie kann ich zusätzlich noch prüfen ob eine .tld angegeben wurde? :)
Irgendiwe bin ich heute einfach für sowas zu Doof oO :/
 
Zuletzt bearbeitet:
Hi,

evtl. hiermit: http://php.net/manual/de/function.parse-url.php

Hostname bekommst du mit $component = PHP_URL_HOST. Da kannst du dann prüfen, ob eine TLD dran hängt. Wenn du nicht davor zurück scheust, zusätzliche PHP-Klassen zu verwenden, wäre das hier noch interessant: https://github.com/jwage/purl Damit kannst du die Member-Variable publicSuffix prüfen.

Recht Herzlichen Dank für deine Antwort :)

Ich schau mal dadrüber :)
Aber geht dies nicht einfacher?
Also bei der überprüfung im Formular?

Sprich wenn Ich http://google ohne deren Endung eingebe.
Sprich das es sich wirklich um eine fiktive URL handelt die eben auf eine .tld endet :)

Mit purl hab Ich nicht so ganz geschnitten wie dies so verläuft oO :D
 
Also mit parse_url() ist es doch schon so einfach, wie man es nur haben kann. Du könntest evtl. noch den Hostname an http://us2.php.net/de/gethostbyname übergeben und damit prüfen, ob der Hostname in eine IP-Adresse auflösbar ist. Das wäre ja schon mal ein Anfang in die Richtung, in die du willst. Dir geht es ja offensichtlich um Validierung.
 
Wenn du noch einen Schritt weiter gehen willst: es gibt sogar die Möglichkeit, zu prüfen, ob eine Seite tatsächlich existiert. Wenn du ein Socket auf den Hostnamen mit Port 80 (oder anderer Port angegeben) öffnest, und den path von parse_url mittels HTTP/1.1-Request abholen lässt, bekommst du einen HTTP-Code (z.B. 200 für OK oder 404 für Nicht gefunden) zurück. Nähere Infos z.B. hier: http://www.html-world.de/program/http_3.php
 
Super Ding :)
Kann Ich sicherlich was damit anfangen :)

Vielen Dank, das bringt natürlich meine Seite einstückchen weiter ;)

Vielen Dank nochmals :)

Ich bin für alles offen wenn es darum geht URL zu Prüfen etc... :D
 
Zurück