1

おはようございます、私はこれを数日間解決しようとしてきましたが、プログラミングのこれについてはちょっと新しいことを認めなければなりません。

実際にニュースウェブサイトを作成していますが、ニュース管理に小さな問題がある場合は、クリックして写真を保存すると、ユーザーファイルからの名前ではなく、ランダムな名前になります。例:pic.jpg 2613.jpgとして保存します。

同じ名前の写真が2つある場合、新しい写真が古い写真に置き換わるのを防ぐためにこれを実行しようとしていますが、javascript、phpで試してみましたが、問題を解決できません。ちなみに、javascript、php、postgresql、jquery、ajaxを使用して作業しています。詳細が必要な場合は、お知らせください。もう一度、このコミュニティからサポートが得られることを願っています。

function guardar(){
if($('#titl').val() == '' || $('#categ').val() == '' || $('#cont').val()==''){
            alert("Todos los campos deben contener datos!");
            return false;
        }

        $.ajax({
            url: "noticias_php.php",
            data:{
                n : rand(),
                "accion" : "guardar",
                ID     : $('#id').val(),
                Titulo : $('#titl').val(),
                Categorias : $('#categ').val(),
                Contenido : $('#cont').val(),
                fecha: $('#fecha').val(),
                imagen: $('#img_id').val()

            },
            success: function(datos){
                var respuesta = explode("-*", datos);

                        if (respuesta[0] == "SI"){
                            aviso(respuesta[1]);
                            limpiar();
                        }else if (respuesta[0] == "NO"){
                            aviso(respuesta[1]);
                        }else{
                            aviso(datos);
                        }
            }
        });
    }
4

4 に答える 4

0

md5(microtime(true));-これは非常にユニークです。

追加するuser_idrand(0,1000)、よりユニークにすることができます。

別の方法は明らかにtempnam、再利用できるbash環境で一意の一時ファイルを作成するを使用することです。

于 2012-06-05T16:12:28.197 に答える
0

ここでできることはいくつかありますが、PHP を使用してサーバー レベルで行うことをお勧めします。表示するコードは、クライアント側の JavaScript のようです。

通常、乱数または日付スタンプを生成できます (こちらの方が便利な場合があります)。次に、これをファイル名に置き換えるか追加します。サイトの使用状況に応じて、これらの両方で十分です。

PHP 乱数ジェネレーター -rand(0000, 9999)

PHP 日付スタンプ ジェネレーター (日付の生成に : 文字などが含まれていない場合、これらは一部の画像 URL を壊すことに注意してください) -date("YmdHis")

ファイル名をきれいにするために、このようなphpをよく使用します

$file_name = str_replace(" ", "_", rand(0000, 9999)."_".eregi_replace("[[:space:]]+", " ", strtolower($_FILES['image']['name'])));

これにより、ファイル名に 4 桁の乱数が追加されて一意になるだけでなく、すべてのダブル スペースが取り除かれ、すべて小文字になり、スペースがアンダースコアに置き換えられます。最もクリーンではないかもしれませんが、機能します。

于 2012-06-05T15:22:46.123 に答える
0

UUID を使用します (GUID とほぼ同じ)。Postgres UUID

どのバージョンを使用していますか? 9.1 の場合は、CREATE EXTENSION "uuid-ossp" を実行してみてください。

Windows を使用していますか、それとも *niX ボックスを使用していますか? どちらを使用しているかに応じたインストール方法の詳細については、このリンクを参照してください。uuid-ossp モジュールをインストールする

于 2012-06-05T14:12:41.320 に答える
0

おそらくデータベースに基づいてこれを駆動したいでしょう - ImageList から max(id)+1 を選択してください。そうすれば、ランダムな値を持つのではなく、一意性が保証されます。UUID を使用することもできますが、はるかに長いファイル名になります。

于 2012-06-05T14:14:15.860 に答える