Link in mysql speichern o. abrufen

10/24/2008 19:59 Mario2323#1
Hallo.
Ich habe ein problem. Ich möchte links in SQL speichern und die dann wieder abrufen können. aber man sollte nicht den link sehen können sondern nur [Only registered and activated users can see links. Click Here To Register...] sehen können.

Ich habe mir gedanken gemacht und das ist dabei rausgekommen:

PHP Code:
<?php
   $fileID 
$_GET['fileID'];
   
mysql_connect("localhost","root","passwort");
   
mysql_select_db("db");

if(isset(
$fileID)) {
    
$ergebnis mysql_query("SELECT file FROM hyperlinks WHERE fileID='$fileID' ");
    
$dd mysql_fetch_array($ergebnis);

    echo
'<meta http-equiv="refresh" content="1; url=$dd[file]>';
    }
?>
das kommt in den headteil

nur klappt das nicht.

Datenbank sieht so aus FileID und File.

Weiß einer die lösung?
MfG Mario2323

PS: Ich bin saumäßig schlecht in PHP
10/25/2008 12:46 Lowfyr#2
echo ersetzen mit:

Code:
echo '<meta http-equiv="refresh" content="1; url='.$dd[file].'>';
wie du siehst musst du variablen abgrenzen damit der inhalt derer geparsed wird.
10/25/2008 15:10 kennyo#3
Quote:
Originally Posted by Lowfyr View Post
echo ersetzen mit:

Code:
echo '<meta http-equiv="refresh" content="1; url='.$dd[file].'>';
wie du siehst musst du variablen abgrenzen damit der inhalt derer geparsed wird.

Wenn schon, dann richtig:

Wenn man einfache Anführungszeichen (') verwendet, muss man die Variablen "abgrenzen", bei doppelten Anführungszeichen jedoch muss man es nicht, da dort alles geparst wird. Einfache Anführungszeichen sind daher auch perfomanter (wenn auch nur sehr gering).

PHP Code:
<?php

$name 
"hans";

// Funktioniert
echo "Der Name lautet $name";

// Funktioniert
echo "Der Name lautet".$name;

// Funktioniert
echo 'Der Name lautet'.$name;

// Funktioniert NICHT
echo 'Der Name lautet $name';

?>
10/25/2008 16:54 verT!c4L#4
OT:
Könntet ihr ein Code-High-Lightening für andere Sprachen mal implementieren?
10/25/2008 23:52 Lowfyr#5
Quote:
Originally Posted by kennyo View Post
Wenn schon, dann richtig:

Wenn man einfache Anführungszeichen (') verwendet, muss man die Variablen "abgrenzen", bei doppelten Anführungszeichen jedoch muss man es nicht, da dort alles geparst wird. Einfache Anführungszeichen sind daher auch perfomanter (wenn auch nur sehr gering).
wollte ich anfangs auch vorschlagen, ist allerdings in seinem beispiel mit einfachen anführungszeichen einfacher da er ansonsten die doppelten im echo escapen muss.

Quote:
Könntet ihr ein Code-High-Lightening für andere Sprachen mal implementieren?
habs eben mal auf meine 2do gesetzt
10/27/2008 07:08 Mario2323#6
so meine lösung ist jetzt:

PHP Code:
<?php
   $link 
$_GET['link'];
   
mysql_connect("localhost","root","#######");
   
mysql_select_db("fbserver");

if(isset(
$link)) {
    
$ergebnis mysql_query("SELECT file FROM hyperlinks WHERE fileID='$link' ");
    
$dd mysql_fetch_array($ergebnis);

    echo
'<script language="javascript">
<!--
window.location.href="'
.$dd[file].'";
// -->
</script>'
;
    }
?>
10/28/2008 13:49 Lowfyr#7
du solltest bei mysql queries die input variablen immer mit mysql_real_escape_string() übergeben, ansonsten wird das ganze recht unsicher.
11/07/2008 07:43 Grunkoras#8
Quote:
Originally Posted by Mario2323 View Post
so meine lösung ist jetzt:

PHP Code:
<?php
   $link 
$_GET['link'];
   
mysql_connect("localhost","root","#######");
   
mysql_select_db("fbserver");

if(isset(
$link)) {
    
$ergebnis mysql_query("SELECT file FROM hyperlinks WHERE fileID='$link' ");
    
$dd mysql_fetch_array($ergebnis);

    echo
'<script language="javascript">
<!--
window.location.href="'
.$dd[file].'";
// -->
</script>'
;
    }
?>

Hi

eine weiterleitung per JavaScript kann problematisch sein,
es gibt Leute die deaktivieren JavaScript, bleib doch bei deiner Lösung mit
dem Redirect im Header, ist etwas sauberer.

du solltest eventuell wenn du dabei bist etwas größeres zu erstellen,
die datenbankverbindung in eine eigene Klasse auslagern, die dann ungefähr
so funktioniert:


// gibt result von fetch_array o.ä zurück
$db->fetch("SELECT * FROM bla WHERE suelz='tada' ORDER BY xy");