php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.06.2007, 13:01  
Neuer Benutzer
 
Registriert seit: 18.06.2007
Beiträge: 2
mijoko
Standard Download abfrage

Haltet mich für Blind oder auch nicht, ich habe jetzt 3 Tage lang, hier und woanders, gesucht und zwar einiges gefunden, aber nichts was mir weiterhilft.

Ich bin mir auch nicht sicher ob meine hüüüüülfäääää Schrei jetzt hierhin oder zu MySql gehört!!!

Kurze Beschreibung worum es eigentlich geht.

Es geht darum, das ein Download für einen bestimmten Zeitraum bsp. 5 Tage freigegeben wird und dann nicht mehr.

Die Eintragungen in der Datenbank sind, so weit, OK.
Die Datumsangaben im Admin Bereich sind OK
Die Datumsangaben in den eMails sind OK

Klingt gut, ne.

Wenn man jetzt allerdings den Downloadlink in der eMail anklickt kommt allerdings die Meldung das der Downloadlink NICHT aktiv ist.

Obwohl auch in der Datenbank alle Eintragen sind die den Download ermöglichen sollen.

Kann es vielleicht sein das es unter anderem daran liegt das mir in der Datenbank kein Datum sondern lediglich z.B.
1182010481 - für das Startdatum
&
1182442616 - für das Enddatum
angezeigt werden???
Ich kann damit jedenfalls nichts anfangen.

Die Daten werden in der DB mit INT 10 eingetragen.

Ich füge mal den Code der Datei ein die den Download überwacht.
Sprich die Download Datei anzeigt,
oder eben die Meldung gibt das der Download nicht aktiev ist.

Bitte denkt daran das wenn jemand Antworten sollte,
das bitte so zu machen das auch ein Anfanger weis was gemeint ist bzw. was er machen soll.
Danke
---
PHP-Code:
<?

require_once("../conn.php");
require_once(
"../includes.php");

$k $_GET["k"];

$info explode("|"$k);


//check the exp date
$q1 "select ExpDate from dd_orders_info where OrderID = '$info[0]'";
$result mysql_query($q1);

echo 
mysql_error();

while (
$res mysql_fetch_row($result))

{
    
$exp $res[0];
    
$ItemID $res[1];
}

if(
$exp $t)
{
    echo 
"


<center><font face=verdana size=2 color=red>[b]Your download link is not active and
you are not able to download this file!"
;

    exit();
}



//get the item
$q1 "select DownloadURL from dd_catalog where ItemID = '$info[1]' ";
$r1 mysql_query($q1);
echo 
mysql_error();
#or die(mysql_error());
$a1 mysql_fetch_array($r1);

$q1 "update dd_orders_content set download_status = 'y' where ItemID = '$info[1]' and OrderID = '$info[0]' ";
mysql_query($q1);
echo 
mysql_error();
#or die(mysql_error());


header("Location: $a1[0]");
die();

?>
mijoko ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 18.06.2007, 13:31  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
.... hüüüüülfäääää
das habe ich mal entfernt, denn sicher hast du das in den Forenregeln nur überlesen, dass
http://www.phpfriend.de/forum/forum1.html
Zitat:
Selbsterniedrigende Formulierungen ("bin Vollnoob"), nichtssagende Betreff-Zeilen ("Hiiiiilfeee habe Problem") [..]
nicht hilfreich sind.

Dein Code wimmelt nur so vor don'ts.
Woher kommt $t?
Macht es Sinn, ein Ergebnis mittels Schleife abzuholen?
Was soll $ItemID eigentlich zugewiesen werden, wenn du im SQL nur eine Spalte selektierst?
Hast du schonmal von CSS gehört?
Warum wechselst du zwischen mysql_fetch_row() und mysql_fetch_array()?
Was sollen die nichtssagenden Variablen $t, $a1, $q1, $r1, $k?
Warum nummerierst du sie durch, überschreibst sie dann aber später doch wieder?

Alles in allem könnte man hier in fast jeder Zeile einen Mangel feststellen.
Setz aber auf jeden Fall erstmal das Error-Reporting-Level mittels error_reporting(E_ALL); am Anfang des Skriptes ganz hoch und korrigier eventuelle Fehler.

Zitat:
Zitat von mijoko
Kann es vielleicht sein das es unter anderem daran liegt das mir in der Datenbank kein Datum sondern lediglich z.B.
1182010481 - für das Startdatum
&
1182442616 - für das Enddatum
angezeigt werden???
Ich kann damit jedenfalls nichts anfangen.

Die Daten werden in der DB mit INT 10 eingetragen.
Das ist ein Unix-Zeitstempel (Timestamp), der die Sekunden seit dem 1.1.1970 angibt. Wie überall in der Mathematik musst du natürlich beim Rechnen auf das Format achten, sprich wenn du mit Unix-Timestamps rechnest, solltest du nicht noch ein "4. April 1998 16 Uhr 17" reinbraten. Das muss schon alles gleich sein.

Trotz allem willkommen im Forum
Zergling-new ist offline  
Alt 18.06.2007, 13:41  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

ich habe nicht alles durchgeschaut, aber nach menem Wissen soll in $ItemID gar nichts stehen, da du nur ein wert und zwar ExpDate selectierst.
ausserdem verstehe ich nicht ganz warum du eine schleife machst?

$hand=mysql_query("select ExpDate, X from dd_orders_info where OrderID = '$info[0]' and ExpDate>$t");
if(mysql_num_rows($hand)<=1)
die(deine fehlermeldung);

.
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 18.06.2007, 14:56  
Neuer Benutzer
 
Registriert seit: 18.06.2007
Beiträge: 2
mijoko
Standard

Zitat:
Zitat von Slava
ich habe nicht alles durchgeschaut, aber nach menem Wissen soll in $ItemID gar nichts stehen, da du nur ein wert und zwar ExpDate selectierst.
ausserdem verstehe ich nicht ganz warum du eine schleife machst?

$hand=mysql_query("select ExpDate, X from dd_orders_info where OrderID = '$info[0]' and ExpDate>$t");
if(mysql_num_rows($hand)<=1)
die(deine fehlermeldung);

.
Ich sagte doch das ich ein "soll man ja nicht sagen" bin.

Habe es jetzt mal auf diese art geändert:
PHP-Code:
<?
error_reporting
(E_ALL);
require_once(
"../conn.php");
require_once(
"../includes.php");

$hand=mysql_query("select ExpDate, from dd_orders_info where OrderID = '$info[0]' and ExpDate>$t");
if(
mysql_num_rows($hand)<=1)
echo 
mysql_error();

{
    echo 
"


<center><font face=verdana size=2 color=red>[b]Your download link is not active and
you are not able to download this file!"
;

    exit();
}



//get the item
$q1 "select DownloadURL from dd_catalog where ItemID = '$info[1]' ";
$r1 mysql_query($q1);
echo 
mysql_error();
#or die(mysql_error());
$a1 mysql_fetch_array($r1);

$q1 "update dd_orders_content set download_status = 'y' where ItemID = '$info[1]' and OrderID = '$info[0]' ";
mysql_query($q1);
echo 
mysql_error();
#or die(mysql_error());


header("Location: $a1[0]");
die();

?>
und dann kommen diese Meldungen:

Notice: Undefined variable: info in /var/www/web13/html/test/dl/index.php on line 6

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/web13/html/test/dl/index.php on line 7

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from dd_orders_info where OrderID = '' and ExpDate>1182171043' a

Your download link is not active and
you are not able to download this file!


Ich blicke da echt nicht durch.
Denn wie gesagt, alles andere, einträge in die DB usw. funktioniert einwandfrei.
mijoko ist offline  
Alt 18.06.2007, 17:12  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
select ExpDate, from
Was soll das denn jetzt? Das ist doch kein gültiger SQL-Code.

Mach es doch einfach so:
PHP-Code:
<?php
$sql 
sprintf('SELECT `download_path`, IF (NOW() BETWEEN `start_date` AND `end_date`, 1, 0) AS `downloadable` FROM `downloads` WHERE `download_id` = %u LIMIT 1', @$_GET['download_id']);
$res mysql_query($sql) or die(mysql_error());
if (
mysql_num_rows($res) != 1) {
  
// angeforderte download-id existiert nicht
  
exit;
}
$dat mysql_fetch_assoc($res);
if (
$dat['downloadable'] == 0) {
  
// ungültiger Zeitraum, Download nicht erlaubt
  
exit;
}
if (!
file_exists($dat['download_path'])) {
  
// Datei existiert nicht, aussteigen
  
exit;
}
$sql sprintf('UPDATE `downloads` SET `downloaded` = `downloaded` + 1 WHERE `download_id` = %u LIMIT 1', @$_GET['download_id']);
$res mysql_query($sql) or die(mysql_error());
// header
readfile($dat['download_path']);
?>
Such die Datei in der Datenbank, berechne gleich mit ob der Zeitraum gültig ist, analysiere das Ergebnis, erhöhe den Download-Counter um eins und schicke die Datei an den Browser zurück. Davor solltest du noch einige header() setzen, mehr dazu im Manual zu dieser Funktion.

Wenn du einfach eine Weiterleitung auf die Datei machst (download_url), kann sich diese URL jeder merken und sie unterliegt damit keiner Beschränkung mehr.
Zergling-new 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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage von einer Abfrage Datenbanken 5 27.01.2011 23:31
Download starten (header funktion), vorher Text ausgeben? Harakiri81 PHP-Fortgeschrittene 19 16.05.2006 21:15
Dateiname bei Download ändern aber wie? CoverDB PHP Tipps 2006 16 20.03.2006 16:40
Abfrage ob Download abgeschlossen.. HTML, Usability und Barrierefreiheit 4 18.03.2006 15:08
mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
Download Problem PHP Tipps 2005-2 3 22.07.2005 16:11
[Erledigt] Hilfe bei Download Verwaltungs Script PHP Tipps 2005 8 04.05.2005 10:29
[Erledigt] IF() abfrage in variable packen PHP Tipps 2005 14 01.04.2005 17:23
Dateioperationen und Download kontrollieren Alpha Centauri PHP Tipps 2005 7 02.03.2005 11:52
Abfrage von Char-Feldern Datenbanken 9 04.02.2005 14:06
[Erledigt] SQL Abfrage funzt nicht Datenbanken 2 04.02.2005 11:09
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
Abfrage funktioniert zwar, aber nicht korrekt Datenbanken 2 16.08.2004 09:10
Abfrage aus DB noch mal ausgeben und Abfrage aus mehrern Tab PHP Tipps 2004 4 12.07.2004 15:00
[Erledigt] Variable per GET übergeben und DB Abfrage nutzen PHP Tipps 2004 4 01.06.2004 15:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
downloadabfrage, email abfragen bei download php, php,downloadbereich mit abfrage, php version abfrage download, links vor download abfrage php, downloadabfrage erscheint nicht, bedingungen abfragen beim download mit javascript, php download abgeschlossen, download nach e mail abfrage php, download anfrage php, mysql abfrage .php download, php download abfrage, download mit email abfrage, download.php anfrage, auststeigen nach php abfrage, \die datumsangaben in den \, download auf abfrage, php download email abfrage, you have an error in your sql syntax check the manual that corresponds to your mysql server version for the right syntax to use near \warning: mysql_num_rows()\, download abfrage ohne datenbank

Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 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.