2010-09-23 5 views
0

J'ai été chargé de créer un site Web, mais l'une des exigences me rend fou.PHP script de téléchargement basé sur le temps

Je dois créer (ou trouver) un script basé sur php, qui permet à un utilisateur de se connecter au domaine, de télécharger un fichier html (+ images ou fichiers audio) et aussi spécifier la date, à quel moment la page html sera rendu accessible? par exemple. Cela permet à l'utilisateur de télécharger plusieurs fichiers avant de partir en vacances, de sorte qu'ils soient automatiquement publiés lors des jours de téléchargement corrects, sans intervention de l'utilisateur sur le domaine.

Il y a une bonne chance que je vais devoir frapper une base de données MySQL en même temps pour l'indexation de recherche avec ajax une fois la page est mise à disposition. J'ai une idée comment créer le script php, 'upload files to tmp dir', mais je ne sais pas comment lancer une commande pour les déplacer dans les bons répertoires par la suite en fonction de la date et de l'heure. s'il vous plaît donnez votre avis.

Le serveur est soit Ubuntu-Server ou CentOS base.

Répondre

1

Je suppose que:
1. chaque utilisateur a un dossier spécifique;
2. dans une base de données sera au moins un enregistrement avec l'utilisateur et la date/heure pour être en vie;

Vous pouvez le faire comme ceci:

Lorsque l'utilisateur télécharge les fichiers que vous pouvez le déplacer immediatelly à son dossier.
S'il s'agit du premier fichier envoyé, créez dans le dossier de l'utilisateur un fichier index.php qui vérifiera si l'heure demandée est supérieure à l'enregistrement de la base de données. Si oui, redirigez le navigateur vers le fichier html (ou autre chose).
Assurez-vous que le fichier téléchargé par l'utilisateur n'est pas nommé index.php. Si oui, renommez son fichier en quelque chose d'autre et dans votre index généré faites la redirection vers le nouveau nom.

+0

merci son est essentiellement ce que je vais faire, mais avec cron sur le index.php, je ne sais toujours pas comment associer un enregistrement de données avec un fichier, lorsque le nom et la date ne seront pas consultables? comme les dates sont différentes et que le nom peut changer – JB87

+1

Dans votre base de données, vous aurez quelque chose comme userID et file. Dans index.php que vous allez créer vous connaissez l'ID utilisateur. Basé sur cette vérification dans la base de données pour le fichier à rediriger. Pour être sûr que personne n'accède à des fichiers dans ce dossier avant la date/heure spécifiée (peut-être en tapant URL directe), vous pouvez également créer un fichier .htaccess en même temps avec index.php pour interdire tout accès. Lorsque le moment est venu, supprimez ce fichier du dossier. J'espère que vous comprenez ce que je veux dire et je ne sais pas si c'est la meilleure solution, mais c'est comme ça que je le ferais. – CristiC

+0

vos réponses sont très utiles! ils sont quelque peu complexes mais je ralentis pour commencer à imaginer clairement comment faire ce travail. Si vous pouviez ajouter une ou deux lignes importantes de votre fichier index.php ici, je pense que je vais avoir la réponse: comme, comment il sait ce qu'est l'ID utilisateur d'un nouveau dossier utilisateur et la redirection de fichiers. – JB87

1

Si votre serveur prend en charge Cron, vous pouvez configurer un court script bash pour copier une liste de fichiers (comme arguments) dans le répertoire.

Alternativement, si le site va être obtenir régulièrement des visites, il peut être plus simple d'avoir une fonction PHP qui vérifie si les fichiers à copier chaque fois que la page est accessible. Pour la rapidité et la simplicité, vous pouvez simplement vérifier quand la dernière copie a été faite, et si c'est plus de 24 heures, faites les choses les plus complexes comme vérifier la liste des fichiers et les déplacer. J'ai oublié de mentionner (je ne sais pas combien d'expérience vous avez eu, alors excuses si cela est évident!), Quand vous téléchargez les fichiers, vous voudriez stocker quelque chose dans la base de données comme « fichier, date_to_move, terminé », où fichier est le nom du fichier, date_to_move serait l'horodatage mysql de la date pour se déplacer et terminé est un booléen de sorte que vous pouvez réduire vous les résultats de requête potentiels, à savoir:

SELECT * FROM my_table WHERE CURRENT_TIMESTAMP() > date_to_move AND completed = 0 

vous pouvez ensuite mettre à jour la table sur le déménagement réussi de sorte que les fichiers déplacés avaient terminé = 1.

+0

ive avait une chance de jouer avec cron et il ressemble à ce que je peux utiliser, merci. Je devrais peut-être revoir la suggestion de mysql mais j'ai quelques soucis. – JB87

+0

comment puis-je empêcher les visiteurs d'observation par exemple, www.mywebsite.com/tmp (où tous les téléchargements de fichiers sont détenus) – JB87

+0

et puis-je utiliser php et Cron pour attraper ou lire un futur horodatage du fichier de téléchargement ... dire en utilisant la fonction de date de contact? pour représenter le téléchargement et déplacer le jour .... – JB87

Questions connexes