勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

短縮URL作成(管理画面)

      2014/07/03

error_reporting(E_ALL & ~E_NOTICE);
require_once("../../library/database.php");

/*ランダムな英数字を作成するファンクション
http://ameblo.jp/linking/entry-10289895826.html
を使用させて頂きました*/
function makeRandStr($length) {
$str = array_merge(range('a', 'z'), range('0', '9'), range('A', 'Z"'));
for ($i = 0; $i < $length; $i++) {
$r_str .= $str[rand(0, count($str)-1)];
}
return $r_str;
}

//変数の取得
extract($_REQUEST);

//登録があった際の処理
if ($mode == "registration") {
//先にcodeが登録されていないかどうかのチェック
$i = 0;
while ($i <= 0) {
$code = makeRandStr(6);
$sql = '
SELECT code
FROM short_url
WHERE code = "' . $code . '";
';
$row = mysql_query($sql);
$check = mysql_num_rows($row);
$i = ($check == 0) ? 1 : 0;
}
$sql = '
INSERT INTO short_url
(code, url)
VALUES
("' . $code . '", "' . $url . '");
';
mysql_query($sql);
header("Location: ./admin.php?mode=registration2");
} elseif ($mode == "delete") {
$sql = '
DELETE FROM short_url
WHERE seq = ' . $seq . ';
';
mysql_query($sql);
header("Location : ./admin.php?mode=delete2");
}

$sql = '
SELECT *
FROM short_url;
';
$row = mysql_query($sql);
$check = mysql_num_rows($row);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transtional//EN" "http://www.w3c.org/TR/html4/loose.dtd">
<meta http-equiv="content-type" content="text/html"/>
<meta cherset = "UTF-8">
<html lang="ja">
<head>
<title>短縮URL</title>
<style>
body,table {
font-size : 11px;
}
table,th,td,tr {
text-align : center;
border-style : solid;
border-width : 1px;
border-collapse: collapse;
}
th {
background-color : #DCDCDC;
}
tr:hover {
background-color: #F5F5F5;
}
.code {
width : 100px;
}
.url {
width : 400px;
}
.short_url {
width : 300px;
}
.mode {
width : 50px;
}
</style>
<script>
function check_delete(){
if (confirm(" 削除してよろしいですか? ")) {
return true;
} else {
return false;
}
}
</script>
</head>
<body>
<h1>短縮URL</h1>
<?
if ($mode == "registration2") {
echo '<font color="red">登録が完了しました</font>';
} elseif ($mode == "delete2") {
echo '<font color="red">削除が完了しました</font>';
}
?>
<form method="post" action="admin.php">
<input type="hidden" name="mode" value="registration">
URL : <input type="text" name="url" size="70">
<input type="submit" value="作成">
</form><br>
<?
if ($check <= 0) {
echo "登録がありません。";
} else {
echo '
<table>
<tr>
<th class="code">短縮コード</th>
<th class="url">登録URL</th>
<th class="short_url">短縮URL</th>
<th class="mode">削除</th>
</tr>
';
while ($result = mysql_fetch_array($row)) {
echo '
<tr>
<td> ' . $result["code"] . '</td>
<td><input type="text" value="' . $result["url"] . '" size="70"></td>
<td>http://aaa/php/short_url/?' . $result["code"] . '</td>
<td><a href="?mode=delete&seq=' . $result["seq"] . '" onclick="return check_delete()">削除</a></td>
</tr>
';
}
echo '</table>';
}
?>
</body>
</html>

 - PHP

  関連記事

Fatal error: Cannot redeclare 関数名のエラー

自作関数の名前が被っている場合に出現するエラー。 ↓みたいに書いているとエラー。 ...

フォーム用テンプレPHP

<?php ini_set( 'display_errors', 0 ); ...

phpでhtmlをpdf化。あと無理矢理画像をpdf化

画像をphpでpdf化したかった。 検索してみるもサーバー側の設定を必要とするも ...

MySQLiでDELETE文

MySQLiでDELETE文 ■ソース $mysqli = new mysqli ...

同一サーバの別ディレクトリでセッション振り分け

同じサーバ内にmemberとownerの別ディレクトリがあり、それぞれにsess ...

PHPでaタグにnofollowを付ける

タイトルそのまま、リンクがあった場合に nofollowつけてくれ、というもの。 ...

エラー処理を1ページにまとめる

できるだけまとめておいた方が効率よさそうなのでメモ。 メインのフォルダにlogs ...

CodeIgniterでログをファイルに出力する

Codeigniterで何らかのエラーが発生した際に分かりやすい形でファイルに情 ...

PHPで一括出力ではなく、ひとつずつ順次に出力する方法

PHPで重たい処理とかをしている際に、途中報告みたいな形で順次出力させる方法のメ ...

PHP5.3にバージョンアップした際の注意

PHP5.1? ぐらいから5.3にバージョンアップした際に 色々とあったのでメモ ...