Link in MySQL Datenbank bei aufruf ändern....brauche Hilfe

klausi89

Erfahrenes Mitglied
Hallo hätte da mal ne Frage vielleicht könnte mir bitte mal jemand helfen.....

Und zwar möchte ich einen Link in der Datenbank durch ein Aufruf der Datei ändern, leider bin ich noch nicht ganz so fit und weiß darum nicht weiter

also funktionieren soll das ganze so das das Script überprüft ob link1 oder link2 in der Datenbank steht
steht link1 drin soll link2 abgespeichert werden und wird die Datei (z.Bsp. per Cronjob) dann wieder aufgerufen soll er aus Link2 wieder link1 machen.

Leider komm ich da gerade nicht weiter :-(
Vielleicht könnte mir jemand helfen, eventuell auch noch zum Thema Sicherheit

hier mein bisheriger Ansatz:

PHP:
$link1 = 'http://url1.com';
$link2 = 'http://url2.com';

$db_hostname = "localhost";
$db_username = "user";
$db_name = "database";
$db_password = "123456789";

$conn = new mysqli($db_hostname, $db_username, $db_password, $db_name);
if ($conn->connect_error) {$error[] .= 'Database: '.$conn->connect_error;}

$u = "SELECT redirect FROM settings";
$url = mysqli_query($conn, $u);

if($url == $link1)
{
  $update = mysqli_query($conn, "UPDATE settings Set redirect = $link2");
}
else
{
  $update = mysqli_query($conn, "UPDATE settings Set redirect = $link1");
}


$conn->close();

Wäre nett wenn mir mal jemand helfen könnte.......
 
Ich verstehe nicht ganz den Sinn und Zweck.

Machst du da immer gleich einen redirect?
Sind es tatsächlich zwei unterschiedliche Hosts?

Wenn es nur zwei Links sind, warum musst du dann erst prüfen, welcher gerade aufgerufen wurde, wenn sowieso immer abwechselnd aufgerufen werden soll.
Meiner Meinung nach kann gleich das Update gemacht werden, es genügt hier, die URL zu prüfen.
 
hmmm....das script soll ja wissen welcher link gerade in der Datenbank abgespeichert ist....und dann eben den anderen reinschreiben....

weiß nur nicht so richtig wie :-(
 
Das ist ja die Frage.
Soll der DB-Eintrag geändert werden abhängig vom url-HOST oder abhängig was grade in der DB steht?
Wenn die Links sowieso abwechselnd aufgerufen werden muss man ja nicht schauen, was vorher drin stand, dann reicht es, den Servernamen abzufragen.
Ich schreib hier mal ein Beispiel (nicht getestet, müsste aber funkionieren):
PHP:
include_once 'db_connect.php';

$link1 = 'url1.com';
$link2 = 'url2.com';

$host = $_SERVER['SERVER_NAME'];

switch($host)
{
  case $link1:
  $u = $link2;
  break;

  case $link2:
  $u = $link1;
  break;

}
$update = "
UPDATE settings
SET redirect = 'http://".$conn->real_escape_string($u)."'";
if(!$result = $conn->query($update))
{
  echo $conn->error;
}
 
ok danke schonmal dafür...leider erhalte ich einen Fehler den ich nicht wirklich verstehe

Unknown column 'redirect_claim' in 'field list'

Tabelle ist settings und die Spalte in der die URL gespeichert ist redirect_claim und nicht redirect war vorhin falsch sry

soll abhängig von dem eintrag sein der sich aktuell in der DB befindet

verstehe jetzt nicht so ganz warum field list ?
 
Unknown column 'redirect_claim' in 'field list' bedeutet genau was es heißt, nämlich, dass es die Spalte redirect_claim nicht in deiner Datenbanktabelle gibt.
Schau nochmal nach, eventuell hast du einen Tippfehler drin.
 
doch gibt sie definitiv

DB: Meine -> Tabelle: settings -> Name: redirect_claim -> Value: und da steht die gespeicherte URL drin -> http://url.com

aber die Variable $u ist nun nirgends definiert....die hatte ich nur vorhin angelegt
 
Zuletzt bearbeitet:
Weil du oben die urls als url1.com und url2.com bezeichnet hast, diesmal aber nur url.com
Folglich existiert die variable nicht, weil die switch-Abfrage kein Ergebnis hatte.
Wieviele Hosts hast du denn?
Du solltest dann die Variable $u vordefinieren.
$u = '';

Edit: dann wird aber beim UPDATE ein leerer Eintrag gespeichert .
Du müsstest eventuell mal genauer sagen was du vor hast.
 
Nein ich glaube du verstehst das falsch...es ist eine Url wo ein script läuft....dort können user auf den link klicken der in der Datenbank gespeichert ist (z.Bsp. ein Shortlink) dieser soll nun eben über dieses script und per cronjob z.Bsp. aller 3 Stunden geändert werden aber eben nicht per Hand da ich ja nicht immer da bin.

nach klick auf den Link kommt man dann auch wieder zurück auf die seite. quasi nur ein redirect
und die Url wo das script läuft hat mit der redirect_claim url nichts zu tun - nur eine kurze weiterleitung

und url.com ist ein beispiel da steht natürlich eine richtige url -> http://example.com drin

und ich möchte eben bei $link1 und $link2 die urls angeben die wie gesagt z.Bsp. durch einen cronjob nach gewisser zeit geändert werden soll.

mal eine gewisse zeit link1 und dann wieder eine gewisse zeit link2 (ein 3. link wäre natürlich auch nicht schlecht)

ich muss quasi nur den gespeicherten link1 in der datenbank automatisch auf link2 wechseln lassen und wenn man die datei dann wieder mal aufruft (z.bsp. nach 3 stunden) wird wieder link1 dort hinterlegt
 
Zuletzt bearbeitet:
Stell doch das Script mal vollständig ein.
Denn laut deiner Anweisung oben ist ein Feld redirect_claim gar nicht aufgeführt.

Ist eventuell ein kleiner Schreibfehler entstanden?
Das kann unter umständen auch mal passieren. :)

Die Link Verwechselung möchtest Du via CronJob machen, sehe Ich das Richtig?

Ohne aber deine Anweisungen richtig zu kennen, können wir dir nicht direkt helfen :)
 

Neue Beiträge

Zurück